在 Options Menu 可以加入 CheckBox(複選框)控制元件作為選項,當一個 checkable 菜單項被選擇時,系統調用相應的回調方法(比如 onOptionsItemSelected()),在這個方法中必須指定 checkbox 的狀態.因爲一個 checkbox 或 radio 按鈕不會自動改變其狀態,但可以使用 isChecked() 查詢菜單項的當前狀態,並可使用 setChecked() 來設置 CheckBox 狀態。
Android Studio Options Menu 選單內增加 CheckBox |
- 操作系統:Windows 7 64-bit 版本
- 開發環境:Android Studio 4.0.1 版本
- Gradle 版本:6.1.1
- 手機測試版本:API 19
- 原程式:C:\DIY-Android-181-16 OptionsMenuCheckbox bugworkshop
- 程式:C:\DIY-Android-181-16 OptionsMenuCheckbox bugworkshop
group 指定 checkableBehavior 屬性:
屬性 |
說明 |
single |
組中只有一個項目可以選中(選項按鈕) |
all |
所有項目均可選中(核取方塊) |
none |
所有項目均無法選中 |
options_menu.xml:
<?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="Setting"> <menu> <group android:id="@+id/checkable_group" android:checkableBehavior="all"> <!-- Notice how these items inherit from the group. --> <item android:id="@+id/checkable_item_1" android:title="item_1" /> <item android:id="@+id/checkable_item_2" android:checked="true" android:title="item_2" /> <item android:id="@+id/checkable_item_3" android:checked="true" android:title=" item_3" /> </group> </menu> </item>
<item android:id="@+id/nongroup_checkable_item_1" android:checkable="true" android:title="Checkbox1" /> <item android:id="@+id/nongroup_checkable_item_2" android:checkable="true" android:checked="true" android:title="Checkbox2" />
<item android:id="@+id/action_about" android:orderInCategory="100" app:showAsAction="never" android:title="About"/> </menu> |
MainActivity.java:
package bugworkshop.optionsmenu;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu; import android.view.MenuItem; import android.widget.CheckBox; import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
private CheckBox check1; private CheckBox check2;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); }
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.options_menu, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.nongroup_checkable_item_1: if (item.isChecked()){ Toast.makeText(this, "Selected Item: " + item.getTitle() + "=Checked" , Toast.LENGTH_SHORT).show(); item.setChecked(false); } else { Toast.makeText(this, "Selected Item: " + item.getTitle() + "=UnChecked", Toast.LENGTH_SHORT).show(); item.setChecked(true); } return true;
case R.id.action_about: Toast.makeText(this, "Selected Item: " +item.getTitle(), Toast.LENGTH_SHORT).show(); return true; default: return super.onOptionsItemSelected(item); } } } |
Android Studio Options Menu 選單內增加 CheckBox |