Android shape、selector使用

—————selector—————

實現點擊textColor的selector(比如按下時,文本變色)效果,不能放在drawable文件夾,textColor只能引用color資源,不能引用drawable資源。解決方法是放在把selector資源放在color文件夾下

——

原來是我孤陋寡聞了,textColor是可以引用drawbale的

而且item中可以直接定義color屬性

——————

selector的item中,如何引用已存在的shape?

不過要注意,引用的shape裏面如果定義了solid的話,會覆蓋selector的item中定義的color

這裏有個解決方法,如果shape的形狀被共用,但顏色不共用的話,可以不在shape中定義solid顏色填充,要對shape添加顏色時,可以background指定爲shape,然後顏色通過指定backgroundTint屬性來實現,這樣,引用1和引用2可以分別使用同樣的shape、不同的顏色

 

不過剛纔試了下,好像下面這種方式,無法對引用的drawable再次渲染顏色

既然shape無法在selector中重用,那就只好在selector中重複寫同樣的shape了

——————

https://www.cnblogs.com/xiaoyuersdch/p/7053403.html

——————

設置item時,如果要設置默認狀態下(無任何state狀態,比如就是默認顯示的drawable)的drawable,不加state_pressed="false"的話,默認狀態的item要定義在後面。如果定義在前面,前面的item的drawable會覆蓋後面加了state_pressed="true"狀態的drawable

 

然後在xml中設置爲background的drawable來引用

——————

Android中selector使用詳解

https://www.jianshu.com/p/51f4514f5fe1

——————

 

這種方式對drawable指定顏色會報錯(

error: '#DDDDDD' is incompatible with attribute drawable (attr) reference.

),應該使用下面的方式:

——————

selector的item中可以內嵌很多元素:

state屬性列表

—————shape—————

<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <corners android:radius="15dp"/>
    <stroke android:color="#c0c0c0" android:width="1dp"/>
</shape>

 

corners 四個角的圓角弧度(單位:像素)

radius 同時設置四個角的圓角弧度

bottomLeftRadius 左下角圓角弧度

bottomRightRadius 右下角圓角弧度

topLeftRadius 左上角圓角弧度

topRightRadius 右上角圓角弧度

 

solid 設置shape圖形內填充的顏色 

color 顏色

——————

只指定corners不指定solid,就會使用當前形狀和默認背景色

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章