iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
Mobile Development

Android開發系列 第 11

[Day11] 簡單的CheckBox(單選)

  • 分享至 

  • xImage
  •  

哈囉大家好今天我們來示範簡單的CheckBox,CheckBox是一種多選選項的按鈕,通常我們會一次放很多CheckBox在布局中,那我今天會先示範單選的CheckBox,那一樣先上程式碼。

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="4dp"
        android:text="是否打勾?"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btn_isCheck"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="將CheckBox打勾"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/checkBox" />

    <Button
        android:id="@+id/btn_cancelCheck"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="將CheckBox取消打勾"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/btn_isCheck" />

</androidx.constraintlayout.widget.ConstraintLayout>

由於我們今天只先示範單選的CheckBox,所以在佈局中只放了一個CheckBox,然後兩個按鈕一個是負責將CheckBox打勾,另一個是將CheckBox取消打勾。

MainActivity

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    CheckBox checkBox;
    Button isCheck,canaelCheck;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        checkBox = findViewById(R.id.checkBox);
        checkBox.setOnCheckedChangeListener(checkBoxOnCheckChange);
        isCheck = findViewById(R.id.btn_isCheck);
        canaelCheck = findViewById(R.id.btn_cancelCheck);
        isCheck.setOnClickListener(this);
        canaelCheck.setOnClickListener(this);

    }
    private CompoundButton.OnCheckedChangeListener checkBoxOnCheckChange = new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked)
            {
                Toast.makeText(getApplicationContext(),"已打勾",Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(getApplicationContext(),"打勾已經被取消",Toast.LENGTH_SHORT).show();
            }
        }
    };

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_isCheck:
                if (checkBox.isChecked()){
                    Toast.makeText(getApplicationContext(),"CheckBox已經被勾選了",Toast.LENGTH_SHORT).show();
                }else {
                    checkBox.setChecked(true);
                }
                break;
            case R.id.btn_cancelCheck:
                if (!checkBox.isChecked()){
                    Toast.makeText(getApplicationContext(),"CheckBox已經取消勾選了",Toast.LENGTH_SHORT).show();
                }else{
                    checkBox.setChecked(false);
                }
                break;
        }
    }
}

在一開始先宣告了一個CheckBox,在程式碼中有個.setOnCheckedChangeListener是用來監聽CheckBox是否有勾選,在程式碼裡面當有勾選時會顯示一個"已勾選"的Toast,當取消勾選時會顯示一個"打勾已被取消"的Toast。

當"將CheckBox打勾"按鈕點擊時會使用setChecked(true)將CheckBox打勾,反之當"將CheckBox取消打勾"被點擊時會將CheckBox取消勾選狀態。

然後在裡面我還有做一個提醒的動作,當CheckBox原本是勾選狀態時點擊"將CheckBox打勾"按鈕會出現Toast提示CheckBox已經被勾選了,反之則是會提示CheckBox已經取消勾選了。

那今天就示範道這了,謝謝大家的觀看。


上一篇
[Day10] 簡單的SeekBar_2
下一篇
[Day12]簡單的CheckBox(複選)
系列文
Android開發30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言