關於Android ToggleButton的一個細節處理

來源:互聯網
上載者:User

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.