Изменение цвета кнопки приводит к увеличению кнопки - PullRequest
0 голосов
/ 28 апреля 2018

Вот как выглядит кнопка после изменения цвета

Вот как это выглядит с «показом границ макета» на

У меня есть кнопка «Добавить заметку», которая показывает диалог для ввода заметки пользователем.

Я хочу изменить цвет кнопки, если заметка сохранена.

Я пробовал это:

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 голосов
/ 28 апреля 2018

Вместо использования background попробуйте backgroundTint

В xml,

android:backgroundTint="#yourcolor"

в Java,

setBackgroundTintList(ColorStateList list)

Для AppCompatButton,

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

Вы можете использовать,

 ViewCompat.setBackgroundTintList(AppCompatButton, ColorStateList)
0 голосов
/ 28 апреля 2018

Я думаю, что он не стал больше, вы можете открыть переключатель под названием «Показать макет привязан» в опции разработчика, макет кнопки не был изменен, вы можете настроить рисование в качестве фона.

0 голосов
/ 28 апреля 2018

Я перепробовал все параметры и, наконец, он работает правильно, когда я использую атрибут android:backgroundTint в вашем XML Button View.

Показать ниже фрагмент: -

android:backgroundTint="#6567dc"

Проблематично

Если в вашем gradle файле minSdkVersion меньше 21 , чем вы должны изменить его на 21 ИЛИ , вы можете свернуть код в если условие проверяет поддержку 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...