—————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,就會使用當前形狀和默認背景色