我已经在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代码时,确实确实会根据需要更改按钮的背景颜色和文本,但是它也会删除圆角。它似乎以某种方式覆盖了选择器中的内容。 如何使拐角保持圆角?
答案 0 :(得分:0)
我为每个按钮状态创建了一个选择器xml。现在,背景选择Java代码如下所示:
buttonCorrection.setBackground(getDrawable(R.drawable.clickcorrectionbutton))
和
buttonCorrection.setBackground(getDrawable(R.drawable.clickcorrectionbuttonnonactive))