AppCompatCheckBox和AppCompatRadioButton的著色問題研究

一:使用主題色

1.給View設(shè)置主題

<style name="MyCheckBoxTheme" parent="Base.Widget.AppCompat.CompoundButton.CheckBox">
        <item name="colorControlActivated">#0FF</item>
        <item name="colorControlNormal">#FFF</item>
    </style>
<android.support.v7.widget.AppCompatCheckBox
        android:theme="@style/MyCheckBoxTheme"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

2.給Activity設(shè)置主題

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="colorControlActivated">#0FF</item>
        <item name="colorControlNormal">#FFF</item>
    </style>

然后將AppTheme設(shè)置給對應(yīng)的Activity
其實主要是colorControlActivated和colorControlNormal在控制它的顏色,colorControlNormal是指正常情況下的顏色,也就是checked等于false的時候的顏色;colorControlActivated是指選中時的顏色俩由,也就是checked等于true的時候的顏色。
當沒有給定colorControlActivated對應(yīng)的顏色時那么colorAccent對應(yīng)的顏色就決定了它選中的顏色会前。
弊端:只能在加載布局的時候應(yīng)用主題顏色左敌,不能通過代碼動態(tài)改變顏色忌警。

二:buttonTint著色

<android.support.v7.widget.AppCompatCheckBox
        android:id="@+id/checkbox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:buttonTint="@color/colorPrimary"/>

如果傳入的是一個顏色值那就是給整個勾選框染上指定的顏色止潘,在這里也可以寫一個顏色選擇器掺炭,通過狀態(tài)給勾選框著色。
弊端:有API版本限制凭戴,最低可用于android5.0涧狮,低于android5.0的設(shè)備是無法修改顏色的,同樣只能在加載布局的時候應(yīng)用顏色么夫。

三:setButtonTintList和setSupportButtonTintList

  1. checkbox.setButtonTintList可以動態(tài)修改顏色者冤,但是有API版本限制,最低可用于android5.0的設(shè)備档痪。
AppCompatCheckBox checkbox = findViewById(R.id.checkbox);
checkbox.setButtonTintList(ColorStateList.valueOf(Color.CYAN));

2.checkbox.setSupportButtonTintList這個方法并沒有暴露出來給開發(fā)者使用涉枫,僅僅用于support v4包里面。

 /**
     * This should be accessed from {@link android.support.v4.widget.CompoundButtonCompat}
     * @hide
     */
    @RestrictTo(LIBRARY_GROUP)
    @Override
    public void setSupportButtonTintList(@Nullable ColorStateList tint) {
        if (mCompoundButtonHelper != null) {
            mCompoundButtonHelper.setSupportButtonTintList(tint);
        }
    }

四:使用CompoundButtonCompat類

這個類一看就知道是兼容用的腐螟,用法其實很簡單:

AppCompatCheckBox checkbox = findViewById(R.id.checkbox);
CompoundButtonCompat.setButtonTintList(checkbox,ColorStateList.valueOf(Color.CYAN));

其實不能使用的setSupportButtonTintList這個方法里面也是調(diào)用CompoundButtonCompat.setButtonTintList實現(xiàn)著色的愿汰。

五:總結(jié)

動態(tài)修改AppCompatCheckBox和AppCompatRadioButton的顏色就使用CompoundButtonCompat.setButtonTintList;布局里面應(yīng)用顏色就使用主題去修改遭垛。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末尼桶,一起剝皮案震驚了整個濱河市操灿,隨后出現(xiàn)的幾起案子锯仪,更是在濱河造成了極大的恐慌,老刑警劉巖趾盐,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件庶喜,死亡現(xiàn)場離奇詭異小腊,居然都是意外死亡,警方通過查閱死者的電腦和手機久窟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門秩冈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人斥扛,你說我怎么就攤上這事入问。” “怎么了稀颁?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵芬失,是天一觀的道長。 經(jīng)常有香客問我匾灶,道長棱烂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任阶女,我火速辦了婚禮颊糜,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘秃踩。我一直安慰自己衬鱼,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布憔杨。 她就那樣靜靜地躺著馁启,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芍秆。 梳的紋絲不亂的頭發(fā)上惯疙,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音妖啥,去河邊找鬼霉颠。 笑死,一個胖子當著我的面吹牛荆虱,可吹牛的內(nèi)容都是我干的蒿偎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼怀读,長吁一口氣:“原來是場噩夢啊……” “哼诉位!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起菜枷,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤苍糠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后啤誊,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岳瞭,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡拥娄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞳筏。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片稚瘾。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖姚炕,靈堂內(nèi)的尸體忽然破棺而出摊欠,到底是詐尸還是另有隱情,我是刑警寧澤柱宦,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布凄硼,位于F島的核電站,受9級特大地震影響捷沸,放射性物質(zhì)發(fā)生泄漏摊沉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一痒给、第九天 我趴在偏房一處隱蔽的房頂上張望说墨。 院中可真熱鬧,春花似錦苍柏、人聲如沸尼斧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棺棵。三九已至,卻和暖如春熄捍,著一層夾襖步出監(jiān)牢的瞬間烛恤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工余耽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留缚柏,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓碟贾,卻偏偏與公主長得像币喧,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子袱耽,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

推薦閱讀更多精彩內(nèi)容