關於Android ToggleButton的一個細節處理


也許大部分人都用過ToggleButton這個View。

用法很簡單初始化后實現一個監聽就行了。

但是剛開始進入界面的時候ToggleButton會顯示一個"off"。很多人可能想改變它,這個剛開始默認顯示的off是不能用ToggleButton.setTextOff()或者ToggleButton.setTextOn()來控制的。

如果你想改變第一此顯示此界面時的文字,有兩種方法

1.在xml中 android:textOff=""

2.在代碼中 使用ToggleButton.setText("")。記住這里不是setTextOff哦。為什么是setText呢,讓我們分析下源碼就明白了

以下是關鍵的一些源碼

    public ToggleButton(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);

TypedArray a =
context.obtainStyledAttributes(
attrs, com.android.internal.R.styleable.ToggleButton, defStyle, 0);
mTextOn = a.getText(com.android.internal.R.styleable.ToggleButton_textOn);
mTextOff = a.getText(com.android.internal.R.styleable.ToggleButton_textOff);
mDisabledAlpha = a.getFloat(com.android.internal.R.styleable.ToggleButton_disabledAlpha, 0.5f);
syncTextState();
a.recycle();
}

首先我們看到ToggleButton的構造函數,我第一眼就發現了syncTextState();於是查看此方法的代碼發現

   private void syncTextState() {
boolean checked = isChecked();
if (checked && mTextOn != null) {
setText(mTextOn);
} else if (!checked && mTextOff != null) {
setText(mTextOff);
}
}

看到了吧,他默認第一次設置的時候使用的是setText這就是我們為什么要在代碼布局中使用setText而不能使用setTextOff的原因。

setTextOff和setTextOn在你點擊ToggleButton還是會生效的哦。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM