0
我的佈局中有一個按鈕,其背景和文本顏色被定義爲選擇器。當未按下時,按鈕具有背景顏色和文本顏色,並且當按下另一種顏色和另一種文本顏色時 - 例如白色背景與黑色文本 - >黑色背景與白色文本。Android:以編程方式更改爲實體xml形狀使文本消失
在我的代碼中的某個點上,我需要用第三組顏色替換背景/文本顏色,然後返回到xml中定義的原始選擇器。但是,返回後文本不再出現,而是我得到一個純色按鈕。
<Button
android:id="@+id/somebutton"
android:layout_width="80"
android:layout_height="80"
android:textColor="@color/sometext_selector"
android:background="@drawable/somebackground_selector"
android:gravity="center"
android:text="@string/sometext"
android:textSize="15sp"
/>
此時一切都很好,但是當我這樣做:
someButton.setBackgroundDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.backgroundRed, null));
someButton.setTextColor(getResources().getColor(android.R.color.holo_red_light));
,然後再把這個:
someButton.setBackgroundDrawable(ResourcesCompat.getDrawable(getResources(), R.drawable.originalBackgroundSelectorDefinedInXml, null));
someButton.setTextColor(getResources().getColor(R.color.originalTextSelectorDefinedInXml));
是當問題開始。
下面是我選擇了個XML - 道歉僞代碼,試想一下,適當的十六進制值:
首先 - 背景:
<item android:drawable="@drawable/color_purple_full" android:state_selected="true"/>
<item android:drawable="@drawable/color_purple_full" android:state_pressed="true"/>
<item android:drawable="@drawable/color_purple_full" android:state_focused="true"/>
<item android:drawable="@drawable/color_purple_outline"/>
color_purple_outline:
android:shape="oval">
<stroke android:width="2dp" android:color="#somepurplehexa" />
<size android:width="80dp" android:height="80dp"/> </shape>
color_purple_full:
android:shape="oval">
<solid android:color="#somepurplehexa"/>
<size android:width="80dp" android:height="80dp" /> </shape>
文本:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@android:color/black" android:state_selected="true"/>
<item android:color="@android:color/black" android:state_pressed="true"/>
<item android:color="@android:color/black" android:state_focused="true"/>
<item android:color="@color/green"/>
我所看到的是在未擠壓狀態,但按下狀態我剛開始純色,沒有文字上正確的背景它根本就沒有。我會很感激任何想法,爲什麼發生這種情況,爲什麼在原始的XML它工作正常,但只有停止工作後更改編程?