更改按钮颜色会使按钮变大

时间:2018-04-28 06:21:36

标签: android button

Here is what the button looks like after changing the color

Here is what it looks like with "show layout bounds" on

我有一个“添加备注”按钮,显示一个供用户输入备注的对话框。

如果保存了便笺,我想更改按钮的颜色。

我试过这个:

btnNote.setBackgroundColor(view.getContext().getResources().getColor(R.color.NN));

和此:

btnNote.getBackground().setColorFilter(ContextCompat.getColor(view.getContext(), R.color.NN), PorterDuff.Mode.MULTIPLY);

但在这两种情况下,按钮也会变得略大。

如何只更改按钮的颜色?

这是我的布局文件中的按钮:

<Button
    android:id="@+id/btnNote"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginEnd="8dp"
    android:layout_marginRight="8dp"
    android:text="Add note"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toStartOf="@+id/btnDelete"
    app:layout_constraintTop_toTopOf="parent" />

3 个答案:

答案 0 :(得分:1)

我在XML android:backgroundTint视图中使用Button属性时尝试了所有选项并最终正常工作。

显示以下代码段: -

android:backgroundTint="#6567dc"

<强>问题在于

如果您的gradle档案minSdkVersion 低于21 ,则将其更改为21 您可以将代码包装到if 条件下检查设备SDK支持,如下所示

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            btnAccept.setBackgroundTintList(ContextCompat.getColorStateList(this, R.color.yourcolor));
        }

使用上面的代码输出

enter image description here

颜色更改后

enter image description here

答案 1 :(得分:0)

请尝试 background

,而不是使用backgroundTint

在xml中,

android:backgroundTint="#yourcolor"

在java中,

setBackgroundTintList(ColorStateList list)

AppCompatButton

button.setSupportBackgroundTintList(ContextCompat.getColorStateList(this, R.color.yourcolor));

你可以使用,

 ViewCompat.setBackgroundTintList(AppCompatButton, ColorStateList)

答案 2 :(得分:0)

我认为它不会变大,你可以在开发者选项中打开名为“show layout bound”的开关,按钮的布局没有改变,你可以自定义一个drawable作为背景。