如何阻止背景颜色代码覆盖xml中的圆角代码?

时间:2018-08-12 09:00:40

标签: android android-layout android-studio-3.0

我已经在layout.xml中编码了以下按钮

<Button
    android:id="@+id/buttonCorrection"
    android:layout_width="0dp"
    android:layout_height="30dp"
    android:layout_marginTop="4dp"
    android:gravity="center_vertical|center_horizontal"
    android:text="Undo last entry"
    android:textSize="@dimen/button_text_size"
    android:textAllCaps="false"
    android:textColor="@color/colorAgainstBackground"
    android:background="@drawable/clickcorrectionbutton"
    app:layout_constraintEnd_toEndOf="@+id/textviewPlayerB"
    app:layout_constraintStart_toStartOf="@+id/textviewPlayerA"
    app:layout_constraintTop_toBottomOf="@+id/textviewPlayerA" />

clickcorrectionbuttion.xml用于设置按钮的背景颜色和其角的圆角:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle" >
            <corners android:radius="10dp"></corners>
            <solid android:color="@color/colorCorrection"></solid>
        </shape>
    </item>

</selector>

这很好用。 但是,应用程序中某些时候的Java代码要求按钮更改颜色和文本。该代码的内容如下...

  

buttonCorrection.setBackgroundColor(getColor(R.color.colorAgainstBackground));   buttonCorrection.setTextColor(getColor(R.color.colorAgainstButton));   buttonCorrection.setText(“选择按钮”);

问题是,当调用该Java代码时,确实确实会根据需要更改按钮的背景颜色和文本,但是它也会删除圆角。它似乎以某种方式覆盖了选择器中的内容。 如何使拐角保持圆角?

1 个答案:

答案 0 :(得分:0)

我为每个按钮状态创建了一个选择器xml。现在,背景选择Java代码如下所示:

buttonCorrection.setBackground(getDrawable(R.drawable.clickcorrectionbutton))

buttonCorrection.setBackground(getDrawable(R.drawable.clickcorrectionbuttonnonactive))