Android:编程自定义按钮背景颜色,同时适合内部按钮

时间:2017-08-14 08:55:15

标签: java android button view

我试图在切换时将我制作的按钮的背景颜色更改为某种颜色,并在未旋转时将其改回,但是当我这样做时,颜色会改变按钮的形状。 这是我的代码:

    public void onClick(View v){
    if(index < 9)
        GameEngine.getInstance().setNumber(number);
    else if(index == 9)
        GameEngine.getInstance().setNumber(number);
    else if (index == 12) {
        GameEngine.getInstance().draftModeSetter();
        v.setBackgroundColor(Color.parseColor("#ffb6c1"));
    }
}

以下是结果before color change和结果after color change。您可以清楚地看到“草稿”按钮变得更大并且更加清晰。

2 个答案:

答案 0 :(得分:0)

如果使用

设置背景颜色
btn.getBackground().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY);

可以使用以下方法重置:

btn.getBackground().clearColorFilter();

答案 1 :(得分:0)

我认为你应该使用xml:shape,选择器如:

shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
<corners android:radius="5dp" />
<solid android:color="@color/blue_400" />
<stroke
    android:width="1dp"
    android:color="@color/blue_400" />
</shape>

selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/shape_comm_bt_pressed" 
      android:state_pressed="true" />
<item android:drawable="@drawable/shape_comm_bt_normal" 
      android:state_pressed="false" />
</selector>

使用

 <Button
    ...
    android:background="@drawable/selector_common_bt"
    ...
 />