Android的supportV7中默認按鈕和選中框的顏色設置

轉載自http://blog.csdn.net/l465659833/article/details/52861964

網上很多更改checkbox勾選框顏色的博客都是互相抄襲的,根本沒有任何效果,現在推薦這個博主的博客還是很有效的,我們可以嘗試更改當前activity的theme來更改checkbox或者dialog打的默認按鈕勾選等默認樣式

我們知道,在styles.xml文件裏面可以設置主題,在主題中設置的一些顏色,將會應用到默認的AppCompat控件上,從而很簡單的就可以保持整個APP在UI上的一致性。下面是一個例子:

<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">

    <item name="colorPrimary">@color/colorPrimary</item>
    <!-- 狀態欄顏色 -->
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>

    <!--按鈕選中或者點擊獲得焦點後的顏色-->
    <item name="colorAccent">@color/colorAccent</item>

    <!--控制searchView的icon顏色的設置-->
    <item name="colorControlNormal">@color/colorControlNormal</item>
    <!--Button按鈕正常狀態顏色-->
    <item name="colorButtonNormal">@color/accent_material_light</item>
    <!--EditText 輸入框中字體的顏色-->
    <item name="editTextColor">@android:color/white</item>
    <!-- 窗口的背景顏色 -->
    <item name="android:windowBackground">@android:color/white</item>
    <!--導航欄上的標題顏色-->
    <item name="android:textColorPrimary">@color/black</item>

    <item name="android:listDivider">@drawable/card_list_divider</item>

    <item name="textAppearanceLargePopupMenu">@style/splashPopUpMenuStyle</item>
    <item name="textAppearanceSmallPopupMenu">@style/splashPopUpMenuStyle</item>

</style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

至於各種控件是如何應用這些顏色設置的,則需要經過更多的嘗試了。
比如Activity導航欄默認的圖標顏色是colorControlNormal,導航欄的底色是colorPrimary,沉浸式狀態欄默認的顏色是colorPrimaryDark;
比如FAB的默認顏色是colorAccent;
比如AppCompatCheckBox默認的選中狀態的顏色是colorAccent,而默認的未選擇狀態的顏色的colorControlNormal;
比如AppCompatSpinner的下拉圖標的默認顏色也是colorControlNormal。
……

其實涉及到的主要的就是下面這幾個參數:

<item name="colorPrimary">?attr/colorPrimary</item>
<item name="colorPrimaryDark">?attr/colorPrimaryDark</item>
<item name="colorAccent">?attr/colorAccent</item>
<item name="colorControlNormal">?attr/colorControlNormal</item>
<item name="colorControlActivated">?attr/colorControlActivated</item>
<item name="colorControlHighlight">?attr/colorControlHighlight</item>
<item name="colorButtonNormal">?attr/colorButtonNormal</item>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

那麼問題來了,如果你使用藍色的沉浸式狀態欄,導航欄上的圖標則使用白色,那在這個Activity中使用AppCompatCheckBox的時候,未選擇狀態就也是白色的,此時如果在白色的背景色下,用戶就看不出這是個AppCompatCheckBox了。這時候怎麼辦?如下圖(圖中使用的是AppCompatSpinner):

顏色不正確

其實很簡單,在這個AppCompatCheckBox上使用app:theme=”@style/MyCheckBox”,然後在styles.xml中添加新的

<style name="MyCheckBox" parent="Widget.AppCompat.CompoundButton.CheckBox">
    <item name="colorControlNormal">@color/colorControlNormal</item>
</style>
  • 1
  • 2
  • 3

但是需要注意的是,這樣可能引起控件其他默認屬性的變化,比如CheckBox的textSize會變成1(不使用app:theme的時候和APP的默認字體大小一樣)。

使用了app.theme之後

參考:
[android:theme和app:popupTheme的作用,以及在android 3.0以下不起作用問題的解決](http://blog.csdn.net/lovexieyuan520/article/details/48931185)

            <link rel="stylesheet" href="http://s.csdnimg.cn/static/markdown/markdown_views.css?v=2.0">
                </div>
發佈了45 篇原創文章 · 獲贊 46 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章