溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android中selector如何使用

發(fā)布時間:2021-06-28 17:03:52 來源:億速云 閱讀:758 作者:Leah 欄目:移動開發(fā)

今天就跟大家聊聊有關(guān)Android中selector如何使用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

Android  selector的詳解

前言:

StateListDrawable 是一種通過XML文件來定義的drawable,使用幾個不同的圖片來呈現(xiàn)同一個圖形,通過object的狀態(tài)來實現(xiàn)切換。例如,一個Button有幾個不同的狀態(tài)(按壓,獲取焦點等等),這種情況下,通過使用 state list drawable,你就可以實現(xiàn)在不同的狀態(tài)下使用不同的背景圖片。

你可以在一個XML文件中描述state list。通過在根節(jié)點selector下定義一個item元素來添加每個圖形。每一各item中使用不同的狀態(tài)屬性來定義不用的drawable。

當每一次狀態(tài)改變的時候,state list都會從上到下被遍歷一遍,第一個與當前state相匹配的item將會被使用—- 這個選擇并不是作出“最匹配”結(jié)果,而是簡單的找到第一個匹配的狀態(tài)。

selector一般都是用來作為有狀態(tài)改變的View的背景,以此來達到當用戶對View進行操作,導(dǎo)致View狀態(tài)改變時,作出改變,讓用戶感知View的狀態(tài)變化。

官方說明

文件位置:res/drawable/filename.xml

編譯資源類型:StateListDrawable

資源引用:

In Java: R.drawable.filename
In XML: @[package:]drawable/filename

語法:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
  android:constantSize=["true" | "false"]
  android:dither=["true" | "false"]
  android:variablePadding=["true" | "false"] >
  <item
    android:drawable="@[package:]drawable/drawable_resource"
    android:state_pressed=["true" | "false"]
    android:state_focused=["true" | "false"]
    android:state_hovered=["true" | "false"]
    android:state_selected=["true" | "false"]
    android:state_checkable=["true" | "false"]
    android:state_checked=["true" | "false"]
    android:state_enabled=["true" | "false"]
    android:state_activated=["true" | "false"]
    android:state_window_focused=["true" | "false"] />
</selector>

更多詳細說明,請查閱xsoftlab

實際使用

下面做一個簡單的實例,對Button的背景根據(jù)狀態(tài)做一下處理

XML文件

selector_ts.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:drawable="@color/pink" android:state_pressed="true" />
  <item android:drawable="@color/yellow" android:state_selected="true" />
  <item android:drawable="@drawable/shaperect" android:state_enabled="false" />
  <item android:drawable="@color/stone" android:state_enabled="true" />
</selector>

主布局文件(activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:focusable="true"
  android:focusableInTouchMode="true"
  android:orientation="vertical"
  android:padding="10dp"
  tools:context="mraz.com.tabdemo.MainActivity">

  <Button
    android:id="@+id/bt_content"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:background="@drawable/selector_ts" />

  <LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="50dp"
    android:orientation="horizontal">


    <Button
      android:id="@+id/bt_selected"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Select"
      android:textAllCaps="false" />

    <Button
      android:id="@+id/bt_disable"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Disable"
      android:textAllCaps="false" />

    <Button
      android:id="@+id/bt_pressed"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_weight="1"
      android:text="Press"
      android:textAllCaps="false" />
  </LinearLayout>
</LinearLayout>

看完上述內(nèi)容,你們對Android中selector如何使用有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI