当点击时,android中按钮的形状会发生不希望的变化

时间:2016-05-04 22:34:50

标签: android android-layout android-button

我正在尝试创建特定形状的自定义按钮以切换其文本和按钮背景颜色。但是当我这样做时,按钮的形状会在我点击它时发生变化。 这是我的activity_main.xml

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:textColor="#5e7974"
    android:background="@drawable/mybutton"
    android:text="Buttons"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:onClick="changecolorbutton" />

我的drawable文件夹中的文件名为mybutton.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true" >
    <shape android:shape="rectangle"  >
        <corners android:radius="7dip" />
        <stroke android:width="2dip" android:color="#5e7974" />
        <gradient android:angle="-90" android:startColor="#5e7974" android:endColor="#5e7974"  />
    </shape>
</item>
<item android:state_focused="true">
    <shape android:shape="rectangle"  >
        <corners android:radius="3dip" />
        <stroke android:width="1dip" android:color="#5e7974" />
        <solid android:color="#58857e"/>
    </shape>
</item>
<item >
    <shape android:shape="rectangle"  >
        <corners android:radius="7dip" />
        <stroke android:width="2dip" android:color="#5e7974" />
    </shape>
</item>

我的MainActivity.java看起来像这样

Button button;
public void changecolorbutton(View v)
{
    Button bt= (Button) findViewById(R.id.button1);
    bt.setTextColor(Color.WHITE);
    bt.setBackgroundColor(Color.parseColor("#5e7974"));
    //bt.setBackgroundResource(R.drawable.buttonshape); -> i tried to change shape again but doesnt work
}

当我运行代码时,按钮的颜色会根据需要更改,但单击按钮后按钮的形状将变为默认值。

1 个答案:

答案 0 :(得分:0)

我无法添加评论。所以我发帖回答。

为什么 bt.setBackgroundResource(R.drawable.buttonshape);

为什么不 bt.setBackgroundResource(R.drawable.mybutton);

我的猜测是按钮跳过了形状,因为你覆盖了背景

bt.setBackgroundColor(Color.parseColor("#5e7974"));