以编程方式更改后,选择器无法正常工作

时间:2015-09-24 07:56:49

标签: android android-layout button text colors

我有以下问题。我有一个不同的colorthemes应用程序。 在彩色布局的中间是一个带有白色角和白色文本的按钮。

按钮:

<Button
            android:id="@+id/button"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="50dp"
            android:background="@drawable/selector_button"
            android:layout_gravity="center"
            android:text="Button"
            android:textAllCaps="false"
            android:textSize="18sp"
          android:textColor="@color/buttontextcolor_green"
            />

selector_button:

<selector
    <item
        android:state_focused="true"
        android:state_pressed="false"
        android:drawable="@drawable/button_off" />
    <item
        android:state_focused="true"
        android:state_pressed="true"
        android:drawable="@drawable/button_on" />
    <item
        android:state_focused="false"
        android:state_pressed="true"
        android:drawable="@drawable/button_on" />
    <item
        android:drawable="@drawable/button_off" />
</selector>

button_on / off只有中风和实体属性,可以在按下时使按钮变为白色。

问题在于 buttontextcolor_green:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item   android:state_focused="true"
        android:state_pressed="false"
        android:color="@color/md_white_1000" />

<item   android:state_focused="true"
        android:state_pressed="true"
        android:color="@color/greenPrimary"/>

<item   android:state_focused="false"
        android:state_pressed="true"
        android:color="@color/greenPrimary" />

<item   android:color="@color/md_white_1000" />

一切正常,按下Button,按钮填充白色,textcolor在按下时从白色变为绿色。

但是,在我以编程方式从我的按钮更改drawable的{​​{1}}之后,它就赢了。

我在问题的开头感到难过,我使用多种colorthemes。因此,如果我按下按钮,android:textColor的{​​{1}}应该更改,我也必须更改按钮的textcolor drawable。

backgroundcolor

下次,当我按下按钮时,Layout必须是蓝色,但它不是。每次下载都会lBackground.setBackgroundColor(getResources().getColor(R.color.bluePrimary)); button.setTextColor((getResources().getColor(R.color.buttontextcolor_blue))); 保持白色。只需在启动应用程序后首次点击即可。

如果我的文字中的某些内容不正确,我道歉,我的德语更好!^^

问候

1 个答案:

答案 0 :(得分:0)

使用getColorStateList。它将解决您的问题。

更改行button.setTextColor((getResources().getColor(R.color.buttontextcolor_blue)));

  

button.setTextColor(getResources()。getColorStateList(   R.color.buttontextcolor_blue)));

并将buttontextolor_blue颜色放在颜色资源文件夹中,如/res/color/buttontextcolor_blue.xml