Material Design風格常用控件的使用與定制

ssyujay 8年前發布 | 22K 次閱讀 Android開發 移動開發 Material Design

一、前言

你是否還在使用selector來定制Button普通狀態、按下狀態的變化呢?

你是否也想自己的Button有Material Design的陰影效果呢?

你是否也想讓各種控件輕松變換各種顏色風格呢?

那么看完這篇分享,你就會有答案了。

二、4種風格的Button

系統默認有4種風格的Button效果,分別是

Widget.AppCompat.Button

Widget.AppCompat.Button.Colored

Widget.AppCompat.Button.Borderless

Widget.AppCompat.Button.Borderless.Colored</code></pre>

效果如下(1-4):

4種風格的Button

按命名、并結合效果圖可以看出,這4種風格對應兩個屬性: 字體顏色 、 邊框顏色 (或稱背景顏色);

4種風格可完整描述為 默認邊框默認字體 、 彩色邊框默認字體 、 無邊框默認字體 、 無邊框彩色字體 ,使用方法也很簡單,只需在普通Button的xml布局文件中,加上style屬性即可:

<Button
    ...
    style="@style/Widget.AppCompat.Button" />

<Button ... style="@style/Widget.AppCompat.Button.Colored" />

<Button ... style="@style/Widget.AppCompat.Button.Borderless" />

<Button ... style="@style/Widget.AppCompat.Button.Borderless.Colored" /></code></pre>

從上圖也可以看到,不加style屬性的話,默認是使用 Widget.AppCompat.Button 風格的。

后面兩種無邊框Button,只需要改變 textColor 屬性來設置效果,沒什么好說的;主要是前面兩種,其實就是同一種效果:有邊框顏色的Button,如何定制請看下一節內容。

三、各種顏色的Button

你是否還在用selector文件來定制各種顏色、各種不同狀態下的Button呢?如果一個應用中需要10個不同的Button,你是否需要定義10*4個xml文件呢?(normal狀態+pressed狀態+disabled狀態+selector選擇器)

其實使用系統的Button控件就可以輕松實現,只需要配置一定的屬性。

首先,確保主題使用Material風格

主題需要使用 Theme.AppCompat 或 Theme.Design 類的子主題(建議使用 Theme.AppCompat 子類主題,兼容Android 5.0以下版本),如 Theme.AppCompat.Light 。

其次,在style文件中設置Button顏色

在 styles.xml 文件中設置 colorButtonNormal 屬性:

values/styles.xml

<style name="RedButton">
    <item name="colorButtonNormal">#F44336</item>
</style>

好了,一起來見證奇跡

在布局文件中定義Button,增加theme屬性(注意,是 theme ,不是 style ):

<Button
    ...
    android:theme="@style/RedButton" />

效果如下:

各種顏色的Button

現在,就可以看到Button變成了你想要的顏色,而且點擊后Button顏色也加深了,完全跟使用selector定制出來的一模一樣。并且如果使用Android 5.0以上的手機,還會默認帶有 水紋波 和 陰影 的炫酷效果。

四、其它各種常用控件

CheckBox

RadioButton

Switch

其余控件像 CheckBox 、 RadioButton ,可以用 colorControlNormal 、 colorControlActivated (或 colorAccent )來控制正常狀態和按下狀態的背景顏色;

而像 Switch 、 EditText 等控件,可以用 colorControlActivated (或 colorAccent )來控制背景顏色。

五、總結

其實本篇主要只有兩部分內容:

  • 4種Button風格:

Widget.AppCompat.Button
Widget.AppCompat.Button.Colored
Widget.AppCompat.Button.Borderless
Widget.AppCompat.Button.Borderless.Colored
  • 4個控件屬性

colorButtonNormal: Button正常狀態顏色
colorControlNormal: 控件正常狀態顏色
colorControlActivated: 選中或者點擊獲得焦點后的顏色
colorAccent: 選中或者點擊獲得焦點后的顏色

 

 

來自:http://www.jianshu.com/p/70a485c168be

 

 本文由用戶 ssyujay 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!