close

開發Android時,有時候需要按鈕具備開關功能,Android中有一個類別就叫做 ToggleButton,可以直接實現,我的Android版本如下:

1.jpg

 

Toggle Button 可以直接在 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"
>

    <
ToggleButton
       
android:id="@+id/toggle"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
app:layout_constraintBottom_toBottomOf="parent"
       
app:layout_constraintEnd_toEndOf="parent"
       
app:layout_constraintStart_toStartOf="parent"
       
app:layout_constraintTop_toTopOf="parent"
/>
</
androidx.constraintlayout.widget.ConstraintLayout>

 

ToggleButton會有預設的開與關的字樣,如下圖:

Screenshot_20210115-113021.png

Screenshot_20210115-113031.png

 

如果要改寫預設的文字,可以在 activity_main.xml中改成如下紅字部分:

<ToggleButton
    android:textOn="已經打開了"
    android:textOff="已經關閉了"
    android:id="@+id/toggle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

 

如果有要使用圖片來取代按鈕,就把這兩個屬性改成:

textOn=””

textOff=””

這樣初始化就不會有文字出現。

 

Java中取用ToggleButton的方式如下,實作CompoundButton.OnCheckedChangeListener可以直接用來判斷ToggleButton的狀態。

 

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
public class MainActivity extends AppCompatActivity {
ToggleButton toggleButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
toggleButton = findViewById(R.id.toggle);
toggleButton.setOnCheckedChangeListener(new ToggleListener());
}
private class ToggleListener implements CompoundButton.OnCheckedChangeListener {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
toggleButton.setTextOn("已經開啟了");
}else{
toggleButton.setTextOff("已經關閉了");
}
}
}
}
view raw gistfile1.txt hosted with ❤ by GitHub

 

打完收工

Reference:

https://stackoverflow.com/questions/11604476/it-is-possible-to-create-a-togglebutton-without-text

arrow
arrow
    創作者介紹
    創作者 葛瑞斯肯 的頭像
    葛瑞斯肯

    葛瑞斯肯樂活筆記

    葛瑞斯肯 發表在 痞客邦 留言(0) 人氣()