发布:2021/12/10 10:20:18作者:管理员 来源:本站 浏览次数:876
我正在使用的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);
}
忘了说,如果你想做到这一点在后面的代码,不要忘了更改背景回到它的老态,当一个新的控制重点。嗯,似乎州列表资源是这里的最佳选择。
© Copyright 2014 - 2024 柏港建站平台 ejk5.com. 渝ICP备16000791号-4