android - 如何在android的菜单项中添加切换按钮

标签 android menu android-optionsmenu

我的应用程序中有选项菜单项。要求是向菜单项添加一个切换按钮。这可能吗?

最佳答案

在撰写本文时,有 3 个选项

1) 使用 app:actionViewClass。示例:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:title="Switch!"
        app:actionViewClass="android.widget.Switch"
        app:showAsAction="always" />
</menu>

2) 您可以在菜单项中使用自定义布局来添加切换按钮。示例:

使用 Switch 创建布局(或者,您也可以使用 ToggleButton ),res/layout/menu_switch.xml:

<?xml version="1.0" encoding="utf-8"?>
<Switch xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:padding="64dp" />

并在菜单项中使用该布局:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:title="@string/switch_button_title"
        app:actionLayout="@layout/menu_switch"
        app:showAsAction="always" />
</menu>

3) 您需要将菜单的android:checkable 属性设置为true 并在运行时控制它的选中状态。示例:

菜单:

<item
    android:id="@+id/checkable_menu"
    android:checkable="true"
    android:title="@string/checkable" />

Activity :

private boolean isChecked = false;

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    MenuItem checkable = menu.findItem(R.id.checkable_menu);
    checkable.setChecked(isChecked);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.checkable_menu:
            isChecked = !item.isChecked();
            item.setChecked(isChecked);
            return true;
        default:
            return false;
    }
}

希望这会有所帮助。

关于android - 如何在android的菜单项中添加切换按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21282279/

相关文章:

javascript - jQuery 获取 .text() 但不是 span 中的文本

android - 动态更改选项菜单,但是通过从 XML 扩展

android - ScrollView android 中的 Horizo​​ntalScrollView

javascript - 范围未定义,调用 Angularjs 模块中的函数

android - 在 flutter 测试中比较两个 PinCode 文本字段

html - 我的下拉菜单的内容关闭得太快

javascript - 粘性页面内导航 - 将长滚动内容移植到小屏幕设备

android - AlertDialog 不显示 onclick

android - 在某些设备上,选项菜单不会出现在操作栏中

android - 在登录系统 (Android) 中使用 invalidateOptionsMenu()