也許大部分人都用過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還是會生效的哦。