如何在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状态的主要内容,如果未能解决你的问题,请参考以下文章

自定义帖子类型活动菜单项

突出显示在 Android 设置应用程序的搜索结果中找到的菜单项

重新加载页面后如何突出显示导航栏中的活动菜单项

突出显示当前所选导航菜单项的背景

我们如何在单击菜单条项时突出显示活动菜单项?

如何突出显示当前菜单项?