Ice*_*ind 60 android android-menu android-checkbox
我的Android应用程序中有以下菜单布局:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/item1"
android:titleCondensed="Options"
android:title="Highlight Options"
android:icon="@android:drawable/ic_menu_preferences" />
<item android:id="@+id/item2"
android:titleCondensed="Persist"
android:title="Persist"
android:icon="@android:drawable/ic_menu_preferences"
android:checkable="true" />
</menu>
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我在Android模拟器中运行我的应用程序时,第二个菜单项似乎不是"可检查的".关于该项目应该有绿色勾号,对吗?表明其可检查.
难道我做错了什么?
Ser*_*tov 80
布局看起来正确.但您必须在代码中选中并取消选中菜单项.
从文档:
选择可检查项目时,系统会调用相应的项目选择回调方法(例如
onOptionsItemSelected()).您必须在此处设置复选框的状态,因为复选框或单选按钮不会自动更改其状态.您可以查询项目的当前状态(就像用户选择它之前一样),isChecked()然后使用设置检查状态setChecked().
Gab*_*gut 33
将items 包装在一个group元素中,如下所示:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="all">
<item android:id="@+id/item1"
android:titleCondensed="Options"
android:title="Highlight Options"
android:icon="@android:drawable/ic_menu_preferences">
</item>
<item android:id="@+id/item2"
android:titleCondensed="Persist"
android:title="Persist"
android:icon="@android:drawable/ic_menu_preferences"
android:checkable="true">
</item>
</group>
</menu>
Run Code Online (Sandbox Code Playgroud)
来自Android文档:
android:checkableBehavior属性接受:
单 - 只能检查组中的一个项目(单选按钮)
全部 - 可以检查所有项目(复选框)
none - 没有可检查的项目
Tou*_*der 16
您可以通过将可设置actionViewClass为可检查的小部件来创建可检查的菜单项android.widget.CheckBox
res/menu/menu_with_checkable_menu_item.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_favorite"
android:checkable="true"
android:title="@string/action_favorite"
app:actionViewClass="android.widget.CheckBox"
app:showAsAction="ifRoom|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)
如果设置actionLayout为带样式的布局,您甚至可以将其设计为可检查的星形android.widget.CheckBox
res/layout/action_layout_styled_checkbox.xml
<CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
style="?android:attr/starStyle"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
res/menu/menu_with_checkable_star_menu_item.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_favorites"
android:checkable="true"
android:title="@string/action_favorites"
app:actionLayout="@layout/action_layout_styled_checkbox"
app:showAsAction="ifRoom|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)
设置值
menuItem.setChecked(true/false);
Run Code Online (Sandbox Code Playgroud)
获得价值
menuItem.isChecked()
Run Code Online (Sandbox Code Playgroud)
将MenuItem转换为CheckBox
CheckBox checkBox= (CheckBox) menuItem.getActionView();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
75318 次 |
| 最近记录: |