1. 程式人生 > >Android小技巧——Selector用法

Android小技巧——Selector用法

Selector生效問題

在做Android UI的時候,Selector是必不可少的,下面說一下使用selector其中一個小技巧
昨天有個小夥伴來問我,你看我明明給這個TextView設定了background,為什麼不生效呢?先來看看他是怎樣寫的:

 <TextView
     android:background="@drawable/tv_background"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"/>
  <?xml version="1.0" encoding="utf-8"?>
//tv_background <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/shape_normal"></item> <item android:drawable="@drawable/shape_press" android:state_pressed="true"></item> </selector>

程式碼很簡單,就是當正常狀態下,顯示shape_normal樣式,當TextView被點選時使用shape_press樣式,乍一看,好像沒有任何問題,但為什麼就不能生效呢?這裡必須要說的是selector的匹配規則。

匹配規則
給一個view的某個屬性設定selector時候,selector的匹配規則是從上往下匹配,當匹配到第一個符合當前狀態的item就返回。

所以前面問題的原因很明顯了,當代碼執行的時候,即使TextView處於press狀態,但它也屬於正常狀態下的一種,所以在第一個就匹配成功了,當然就不會匹配到下面的shape_press樣式了。所以如果需要有個press態,調一下item順序即可。

//tv_background
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
android:drawable="@drawable/shape_press" android:state_pressed="true">
</item> <item android:drawable="@drawable/shape_normal"></item> </selector>

所以,建議每個Android程式設計師朋友,當使用selector的時候,儘量的把預設的item放在最後,這樣就不會產生這樣的問題了。

Selector中直接包含shape

很多小夥伴寫一些背景圓角的按鈕時候,並且有按住和釋放時候的狀態,往往要寫一個selector xml和兩個shape drawable xml檔案,其實可以直接在selector包含shape,如下

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <item android:state_selected="true">
        <shape android:shape="rectangle">
            <corners android:topRightRadius="10dp"></corners>
            <solid android:color="@color/black_transparent_70"></solid>
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:topRightRadius="10dp"></corners>
            <solid android:color="@color/black_transparent_60"></solid>
        </shape>
    </item>
</selector>

Selector設定影象透明度

有時候產品需要在獲取焦點,或者按住的時候設定圖片的透明度,這個可以採用Selector加上bitmap標籤即可實現:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <bitmap android:src="@drawable/ic_category_none" android:alpha="0.5"></bitmap>
    </item>
    <item android:drawable="@drawable/ic_category_none"></item>
</selector>

相關推薦

Android技巧——Selector用法

Selector生效問題 在做Android UI的時候,Selector是必不可少的,下面說一下使用selector其中一個小技巧 昨天有個小夥伴來問我,你看我明明給這個TextView設定了background,為什麼不生效呢?先來看看他是怎樣寫的:

android技巧之點擊兩次退出活動

code over ast finish int ide amp return ini 通常在主活動中可以設置連擊退出程序,下面通過代碼來實現這一功能: @Override//按兩次back鍵退出public boolean onKeyDown(int keyCode, K

Android技巧(二):為ContentProvider新增資料庫事務支援

介紹:資料庫事務是由一組資料庫操作序列組成,事務作為一個整體被執行。 事務的原子性:包含在其中的對資料庫的操作序列最終要麼全部執行,要麼全部不執行。當全部執行時,事務對資料庫的修改將生效;當全部不執行時,資料庫維持原有的狀態,不會被修改。 問題:最近在做一個從sdcard

Android技巧收集

當前執行緒判斷 public static boolean isOnMainThread() { return Looper.myLooper() == Looper.getMainLoo

Android技巧——LinearLayout巧妙的平均分配空間

當我們編寫Android UI的時候,肯定會遇到這樣的UI設計,在螢幕寬度裡面線性橫向排列有三個View,每個View平分螢幕寬度。乍一看,這個很簡單嘛,給這三個View都設定一個相同的width就好嘛,如下: <?xml version="1.0"

Android技巧-SharedPreferences實現設定介面

SharedPreferences的一個用途是實現設定介面,雖然現在的許大家都用它來儲存基本的鍵值對。 1.設定xml /res/xml/preferences.xml <PreferenceScreen xmlns:android="

Android技巧——EditText

1、EditText限制最大行數 android:maxLines = "2" //限制最大的行數為兩行 2、修改游標顏色 android:textCursorDrawable="@null" @null表示和文字顏色一樣, 特定的顏色可以使用

最強 Android Studio 使用技巧和快捷鍵

面板 panel 讓其 駝峰 展示 tab鍵 所在 最有 初始 常用技巧 1. 書簽(Bookmarks) 描述:這是一個很有用的功能,讓你可以在某處做個標記(書簽),方便後面再跳轉到此處。 調用:Menu → Navigate → Bookmarks 快捷鍵: 添

aNDROID快捷鍵使用技巧

5% 快捷鍵 ongl oid eclips 使用 lis eclipse android ECLIpsE%E6%96%87%E5%AD%97%E5%A4%A7%E5%B0%8F%E4%BF%AE%E6%94%B9%28%E8%BD%AC%29 http://music.

Android】實現線程異步技巧

使用 msg xtend util rri wsh ride 執行 java 方式不止一種,這裏使用的是Timer類,創建一個定時器。我們經常需要獲得移動設備端口的顯示屏信息,但是onCreate()方法執行的時候,OnShow()方法不一定執行了,也就是說,在執行Oncr

Android開發的一些技巧

本篇講述的是Android開發中遇到的一些好用的小技巧,或者一些實用的API,很多人都知道,但也有人不知道,記錄下來,如果能幫助到大家,也是極好的.有些工具和類我也會經常用,所以我會根據自己的想法去寫.有些地方坐在並沒有將這個工具的作用講出來,我會補充上去. 正文: Environ

Android Studio開發技巧(一)

我們都知道,Android Studio的功能是非常強大的,也是很智慧的。如果有人告訴你學Android開發要用命令列,你可以告訴他Android Studio是谷歌提供給開發者提升效率的。試想想你腦袋裡有一堆想法,但是開發編碼效率太低導致想法都丟失了或者興趣消失了多可怕對不。好了廢話不多說,這裡介

Android-0. Android Studio的一些技巧

目錄 快速宣告一個區域性變數 快捷鍵ctrl+alt+v,或者選中要生成變數的程式碼: 此操作會快速生成一個區域性變數,如下intent:   選擇勾選上面的Declare final會在變數前面增加final 快速宣告一個成員變數 快捷

老司機總結下 Android Studio 實用技巧

前言 相信介紹 Android Studio 快捷鍵啊使用技巧的文章估計比我們屌絲程式猿的數量還要多,所以多我一篇不多,少我一篇不行,那本猿就把自己幾乎每天都用的快捷鍵整理一下,希望能有人用到,如果你已經知曉了,那麼請輕噴,畢竟我too young….(本屌用的是mac,所

Android Studio---設定/快捷鍵/技巧大全

一.護眼綠 編輯介面:setting --- IDE Setting --- editor --- general --- background 打勾 顏色寫上#C7EDCC(護眼綠) 其他介面:s

Android studio快捷鍵大全+Android studio使用技巧

用了好一段的Android studio了。但是很多快捷鍵還是不會用,這可真是操蛋!百度了下,滿屏全是各種講解,好吧,我想說我只想找到我自己想用的。所以自己也根據網上的資源整理一片屬於自己的Android studio快捷鍵!不廢話了,上程式碼!         1. C

android log你不知道的技巧

Android開發中,我們經常使用Log類來記錄log資訊,但是有時候我們輸出的log資訊太多,或者log中包含重要資訊,這時候我們僅僅希望只在開發環境中才輸出log,生產環境的安裝包不輸出日誌,一個小技巧就是檢測BuildConfig.DEBUG的值 if (BuildC

Linux技巧之history命令用法15例

作為Linux系統工程師,在分析系統的安全或故障問題時,經常會使用history(歷史)命令檢視系統的歷史操作記錄,這篇文章將通過例項的方式向你介紹history命令相關的15個小技巧…… 1. 使用 HISTTIMEFORMAT 顯示時間戳 當你從命令列執行 history 命令後,通常只會顯示已

android viewpager+fragment與利用viewpager滑動分頁技巧

一:簡單的實現viewpage進行fragment的滑動切換 public class LcVpFragment extends Fragment{ @Override public void onActivityCreated(Bundle savedInsta

Android開發基礎 -- 最強 Android Studio 使用技巧和快捷鍵

寫在前面 本文翻譯自 Android Studio Tips by Philippe Breault,一共收集了62個 Android Studio 使用小技巧和快捷鍵。 根據這些小技巧的使用場景,本文將這62個小技巧分為常用技巧(1 – 28)、編碼技巧(29 – 49)和除錯技巧(