如何在Android中突出显示自定义菜单项onFocus状态
Posted
技术标签:
【中文标题】如何在Android中突出显示自定义菜单项onFocus状态【英文标题】:How to highlight the custom menu item onFocus state in Android 【发布时间】:2018-01-25 05:11:33 【问题描述】:how to highlight menu item on selection?
我遇到了这个非常接近我的实现的地方。但是,在我的情况下是不同的。由于我正在为电视开发并具有 LEFT/RIGHT?CENTER 等控件。所以我使用 LocalBroadcastManager 从我的活动中的自定义布局类接收 keyEvent。
private BroadcastReceiver mMessageReceiver = new BroadcastReceiver()
@Override
public void onReceive(Context context, Intent intent)
KeyEvent keyEvent = intent.getParcelableExtra(Constants.KEY_PRESSED_EVENT);
Log.d(TAG, "Receiver got ketEventCode : " + keyEvent.getKeyCode());
switch (keyEvent.getKeyCode())
case KeyEvent.KEYCODE_MENU:
if (!PipLayout.isMenuOpened)
openOptionsMenu();
else
closeOptionsMenu();
break;
case KeyEvent.KEYCODE_BACK:
return true;
当我说按遥控器上的左键时,我会执行以下操作
menu.getItem(menuItemPosition).getActionView().requestFocus();
是的,focusable 和 focusableOnTouchMode 设置为 true,但我的光标所在的项目未在 UI 中突出显示,尽管我有日志显示菜单项位置的更新。
如何突出显示它指向的菜单项?
【问题讨论】:
【参考方案1】:您可能需要查看此documentation,其中讨论了使用 android 提供的Drawable State List Resources 实现聚焦和选定控件的高亮显示。
尝试使用android:state_activated
。
布尔值。 "true" 如果在对象被激活为持久选择时应使用此项目(例如在持久导航视图中“突出显示”先前选择的列表项);如果在对象未激活时使用,则为“false”。
【讨论】:
@Teyram 感谢分享。但我选择实施自定义菜单,因为在我的情况下它更可行,但我希望其他人从中受益。以上是关于如何在Android中突出显示自定义菜单项onFocus状态的主要内容,如果未能解决你的问题,请参考以下文章