2022年7月21日 星期四

Android Studio - Options Menu 選單內增加 CheckBox(九十一)

Android Studio - Options Menu 選單內增加 CheckBox(九十一):

在 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

2022年 7月 21日(Thu)天氣報告
氣溫:61.0°F / 16.0°C @ 07:00
風速:每小時 6公里
降雨機會:2%
相對濕度:百分之 79%
天氣:大致晴朗

沒有留言:

張貼留言