Android使用selector切換enable狀態遇到的問題:只改變了顏色但是沒改變形狀
阿新 • • 發佈:2020-07-18
如標題所示,昨天在使用selector的時候遇到了點問題
設計給出的輪播效果圖是這樣的
我這邊用的selector,實現的效果是這樣的
下面是程式碼
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true"> <shape android:shape="oval"> <solid android:color="#ffffff" /> <size android:width="6dp" android:height="6dp" /> </shape> </item> <item android:state_enabled="false"> <shape android:shape="oval"> <solid android:color="#57ffffff" /> <size android:width="6dp" android:height="6dp" /> </shape> </item> </selector>
嗯,,,我覺得我應該把shape換成rectangle,加上圓角,換個長度,就像這樣。
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true"> <shape android:shape="rectangle"> <solid android:color="#ffffff" /> <size android:width="18dp" android:height="6dp" /> <corners android:radius="3dp"/> </shape> </item> <item android:state_enabled="false"> <shape android:shape="rectangle"> <solid android:color="#57ffffff" /> <size android:width="6dp" android:height="6dp" /> <corners android:radius="3dp"/> </shape> </item> </selector>
然而編譯之後看到現實出來的效果卻不如與其那般,雖然輪播的時候顏色變了,但是形狀並沒有變化
啊這。。。。。
好吧找找解決辦法,看看網上有沒有帶哥們遇到這個問題並把解決方法分享出來
好的,找到了!
https://stackoverflow.com/questions/38179431/android-selector-changes-color-but-not-size
根據描述,我應該在設定指示點的enable之後對指示點呼叫一次requestLayout()方法
tvPosition.setText((realPosition + 1 - videoSize) + "/" + imageSize); pointGroup.getChildAt(realPosition).setEnabled(true); pointGroup.getChildAt(realPosition).requestLayout(); if (pointGroup.getChildAt(lastPointIndex) != null) { pointGroup.getChildAt(lastPointIndex).setEnabled(false); pointGroup.getChildAt(lastPointIndex).requestLayout(); }
OK,編譯一下,成了!