iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
Mobile Development

Android studio 30天新手筆記系列 第 4

Day4-Android新手筆記-Button樣式(按鈕狀態)

  • 分享至 

  • xImage
  •  

Selector可以用來定義一個元件在不同狀態使用的外觀及顏色。selector是一個xml檔,可以用來結合shape,在shape中定義想呈現的效果後,在selector中與狀態綁定,在不同的操作狀態下,可改變元件的外觀。/images/emoticon/emoticon30.gif

常見的狀態如下幾種:
1.state_pressed 表示元件被按下時套用
2.state_focused 表示元件獲得焦點時套用
3.state_selected 表示元件被選中時套用
4.state_checked 表示元件被勾選時套用
5.state_enabled 表示元件是否被系統實例化時套用

本章延續上篇文章中的shape內容,先以shape建立兩個xml檔(button_shape、button_shape2):

button_shape:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
        android:radius="15dp"
        />
    <gradient
        android:angle="45"
        android:centerX="35%"
        android:centerColor="#D7C4BB"
        android:startColor="#6699A1"
        android:endColor="#91989F"
        android:type="linear"
        />
    <padding
        android:left="0dp"
        android:top="0dp"
        android:right="0dp"
        android:bottom="0dp"
        />
    <size
        android:width="250dp"
        android:height="50dp"
        />
    <stroke
        android:width="3dp"
        android:color="#BDC0BA"
        />
</shape>

button_shape2:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <corners
        android:radius="15dp"
        />
    <gradient
        android:angle="45"
        android:centerX="35%"
        android:centerColor="#000000"
        android:startColor="#6699A1"
        android:endColor="#91989F"
        android:type="linear"
        />
    <padding
        android:left="0dp"
        android:top="0dp"
        android:right="0dp"
        android:bottom="0dp"
        />
    <size
        android:width="250dp"
        android:height="50dp"
        />
    <stroke
        android:width="3dp"
        android:color="#BDC0BA"
        />
</shape>

接下來以Selector建立一個xml檔,這邊以Button被按下時的狀態來介紹:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    //按下時
    <item android:state_pressed="true"
    android:drawable="@drawable/button_shape" />
    //初始狀態
    <item android:drawable="@drawable/button_shape2" />
</selector>

初始狀態:

按下時:

此外,這邊附上其他狀態的寫法:

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    //表示元件獲得焦點時套用
    <item android:state_pressed="true"
        android:drawable="@drawable/button_shape2"/>
    //表示元件獲得焦點時套用
    <item android:state_focused="true"
        android:drawable="@drawable/button_shape2"/>
    //表示元件被選中時套用
    <item android:state_selected="true"
        android:drawable="@drawable/button_shape2"/>
    //表示元件被勾選時套用
    <item android:state_checked="true"
        android:drawable="@drawable/button_shape2"/>
    //表示元件是否被系統實例化時套用
    <item android:state_enabled="true"
        android:drawable="@drawable/button_shape2"/>
</selector>

selector與shape都建立成功後我們回到activity_main.xml中,利用元件的background屬性綁定樣版:

<Button
        android:id="@+id/button"
        android:background="@drawable/button_selector"
        app:backgroundTint="@null"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="Button" />

/images/emoticon/emoticon41.gif


上一篇
Day3-Android新手筆記-Button客製化樣式教學
下一篇
Day5-Android新手筆記-ListView元件基本介紹
系列文
Android studio 30天新手筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言