JAVA - При изменении цвета меняется размер элемента

Проблема заключается, что при смене цвета кнопки происходит то ли смещение, то ли изменение стиля, как проверить и исправить, и почему цвет так дурно влияет?


if(countChose > 0) {         
    butCreate.setText(getString(R.string.b_delete));                        
    butCreate.setBackgroundColor(getResources().getColor(R.color.colorPrimaryRed));
    butCreate.setId(R.id.b_delete);
} else {                        
    butCreate.setText(getString(R.string.b_create));                           
    butCreate.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
    butCreate.setId(R.id.b_add);
}

https://sun9-68.userapi.com/c858224/v858224671/1a7ded/3fDZGGzDgA0.jpg

введите сюда описание изображения


Ответы (1 шт):

Автор решения: Сергей Бувака

Из того что я вижу на вашей картинке к зеленым кнопкам применен drawable файл со стилем кнопки. Этот самый drawable задается параметром setBackground() (скорее всего в вашем случае в XML разметке). А потом вы в коде меняете этот параметр background на простую заливку цветом, вот в этом ваша и проблема.

Решение в том, чтоб либо для другого цвета создать второй drawable с другим цветом и тем же параметрами и применить его вместо цвета. Можно еще попробовать такое решение

Drawable unwrappedDrawable = AppCompatResources.getDrawable(context, R.drawable.my_drawable); 
Drawable wrappedDrawable = DrawableCompat.wrap(unwrappedDrawable);
DrawableCompat.setTint(wrappedDrawable, Color.RED);   
→ Ссылка