隐藏

如何在Xamarin中指示当前选定的控件?

发布:2021/12/10 10:20:18作者:管理员 来源:本站 浏览次数:651

我正在使用的Android设备没有任何触摸屏。它只有一个触摸板,可以生成KEYCODE_DPAD_UP,KEYCODE_DPAD_DOWN等。但是,我不确定我的Xamarin应用程序是否正在响应这些事件。是否有任何设置可以帮助确定一组控件中的当前选择。如何在Xamarin中指示当前选定的控件?

当我进入设备的主屏幕并使用DPad键移动时,我看到当前选中的图标周围有一个很薄的正方形。我希望Xamarin应用程序中有类似的设置来打开此行为。问候。

您可以简单地使用活动的CurrentFocus来获得当前集中控制。但首先,当控制中心,它会被高亮显示,通常我们可以修改控件的背景的绘制状态列表资源,例如:

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <!-- pressed --> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <!-- focused --> <item android:state_hovered="true" android:drawable="@drawable/button_focused" /> <!-- hovered --> <item android:drawable="@drawable/button_normal" /> <!-- default --> </selector> 

这个可视化行为是一个按钮,表示用户导航到控件。

当我走到设备的主屏幕并使用DPad键移动时,我看到当前选中的图标周围有一个很薄的正方形。我希望Xamarin应用程序中有类似的设置来打开此行为。

所以这个薄方形可以是专注状态的设计背景。

我不知道是否有它的任何设置,但如果你想做到这一点在后面的代码来表示其控制目前集中,正如我开头所说,你可以使用活动的CurrentFocus。例如:

public override bool DispatchKeyEvent(KeyEvent e) { if (e.Action == KeyEventActions.Up) 
    { if (e.KeyCode == Keycode.DpadDown || e.KeyCode == Keycode.DpadUp 
      || e.KeyCode == Keycode.DpadLeft || e.KeyCode == Keycode.DpadRight) 
     { var view = this.CurrentFocus; 
      view.SetBackgroundDrawable(...); 
     } 
    } return base.DispatchKeyEvent(e); 
} 

忘了说,如果你想做到这一点在后面的代码,不要忘了更改背景回到它的老态,当一个新的控制重点。嗯,似乎州列表资源是这里的最佳选择。