我的应用程序中有选项菜单项。要求是向菜单项添加一个切换按钮。这可能吗?
最佳答案
在撰写本文时,有 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/