【问题标题】:How to highlight the custom menu item onFocus state in Android如何在Android中突出显示自定义菜单项onFocus状态
【发布时间】: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 中突出显示,尽管我有日志显示菜单项位置的更新。

如何突出显示它指向的菜单项?

【问题讨论】:

    标签: android android-layout android-menu android-tv android-optionsmenu


    【解决方案1】:

    您可能需要查看此documentation,其中讨论了使用 Android 提供的Drawable State List Resources 实现聚焦和选定控件的高亮显示。

    尝试使用android:state_activated

    布尔值。 "true" 如果在对象被激活为持久选择时应使用此项目(例如在持久导航视图中“突出显示”先前选择的列表项);如果在对象未激活时使用,则为“false”。

    【讨论】:

    • @Teyram 感谢分享。但我选择实施自定义菜单,因为在我的情况下它更可行,但我希望其他人从中受益。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-06
    • 2014-06-10
    • 2014-02-27
    • 2019-10-23
    相关资源
    最近更新 更多