Android:setBackgroundColor而不删除我的drawable

时间:2016-05-19 14:52:28

标签: android xml drawable

我有一个按钮:

<Button
    android:layout_width="60dp"
    android:layout_height="wrap_content"
    android:text="@string/male"
    android:id="@+id/btn_mgen_m"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/bg_tgl_btn_left"
    android:textColor="#444444" />

我改变了它的颜色:

btnMgenM = (Button) findViewById(R.id.btn_mgen_m);
btnMgenM.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        btnMgenM.setBackgroundColor(Color.parseColor("#dca8c3"));
    }
});

背景颜色已正确更改但似乎删除了背景颜色。圆形半径,文本颜色和边框被删除 只剩下简单的彩色按钮。 我想在单击此按钮时更改背景颜色,但不会更改其他任何内容。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

试试这两行

btnMgenM.setBackgroundResource(0);
btnMgenM.setBackgroundColor(Color.parseColor("#dca8c3"));

答案 1 :(得分:0)

您可以执行以下操作:

res/drawable button_style.xml

中创建
<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_focused="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/colorGreyFirst" />
        <corners android:radius="16dp" />
        <stroke
            android:width="3dp"
            android:color="@color/colorBlackTransparent" />
    </shape>
</item>

<item android:state_selected="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/colorGreyFirst" />
        <corners android:radius="16dp" />
        <stroke
            android:width="3dp"
            android:color="@color/colorBlackTransparent" />
    </shape>
</item>

<item android:state_pressed="true">
    <shape android:shape="rectangle">
        <solid android:color="@color/colorGreyFirst" />
        <corners android:radius="16dp" />
    </shape>
</item>

<item>
    <shape android:shape="rectangle">
        <solid android:color="@color/colorGrey" />
        <corners android:radius="16dp" />
        <stroke
            android:width="3dp"
            android:color="@color/colorGrey" />
    </shape>
</item>

并在你的xml中:

    <Button
android:layout_width="60dp"
android:layout_height="wrap_content"
android:text="@string/male"
android:id="@+id/btn_mgen_m"
android:layout_gravity="center_horizontal"
 android:background="@drawable/button_style"
android:textColor="#444444" />

并在您的color.xml中,您可以指定颜色。

或者您可以这样做:

    btnMgenM = (Button) findViewById(R.id.btn_mgen_m);
btnMgenM.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        btnMgenM.setBackgroundColor(getResources().getColor(R.color.yourColor));

    }
});

并将其添加到color.xml

 <color name="yourColor"> #dca8c3</color>

希望它有所帮助。