如何以编程方式从android.support.design将背景颜色更改为MaterialButton

时间:2018-09-28 15:47:23

标签: android kotlin material-design

我尝试使用以下代码将颜色更改为MaterialButton:

var materialButton = findViewByid(R.id....) as MaterialButton
materialButton.setBackgroundColor( ContextCompat.getColor(this@MyActivity, R.color.myCustomColor));

使用普通按钮,它可以工作。 有人有什么想法吗?

8 个答案:

答案 0 :(得分:7)

我找到了如下答案:

我更改了以下行

@if(!empty($address))
@foreach($address as $row)
    <p><strong>Address : </strong>{{ $row->house_no }}, {{ $row->location }}, {{ $row->landmark }}</p>
    <p><strong> City : </strong>{{ $row->city }}</p>
    <p><strong>State : </strong> {{ $row->state }}</p>
    <p><strong>Pin Code : </strong>{{ $row->pin_code}}</p>
    <a data-toggle="modal" data-target="#mod1">Edit address</a> 
@endforeach 

materialButton.setBackgroundColor( ContextCompat.getColor(this@MyActivity, R.color.myCustomColor));

我以这种方式进行了测试,并且效果很好。

答案 1 :(得分:2)

只需在Material Button中的XML文件中调用此属性。

 android:backgroundTint=""

答案 2 :(得分:0)

您应该更改colorAccent来更改materialButton的背景。

请勿使用android:background属性。 MaterialButton管理其自己的背景可绘制对象,并且设置新的背景意味着MaterialButton无法再保证其引入的新属性将正常运行。如果更改了默认背景,则MaterialButton无法保证行为明确。

对于填充按钮,此类使用主题的?attr / colorAccent表示背景色,而白色表示文本色。对于未填充的按钮,此类使用?attr / colorAccent表示文本颜色,并使用透明表示背景色。

答案 3 :(得分:0)

让我们尝试一下:

mButton.getBackground().setColorFilter(getResources().getColor(R.color.indian_red), PorterDuff.Mode.SRC_ATOP);

答案 4 :(得分:0)

尝试一下

Drawable drawable = DrawableCompat.wrap(mButton.getBackground());
drawable.mutate();
DrawableCompat.setTint(drawable, getResources().getColor(R.color.my_color));
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

答案 5 :(得分:0)

materialButton.setBackgroundColor( ContextCompat.getColor(this@MyActivity, R.color.myCustomColor))

处理材料设计依赖项
implementation 'com.google.android.material:material:1.2.0-alpha05'

答案 6 :(得分:0)

有关C#/ Xamarin.Android:

button.BackgroundTintList = ColorStateList.ValueOf(element.Color.ToAndroid());

答案 7 :(得分:-1)

materialButton.setBackgroundColor(ContextCompat.getColor(this @ MyActivity,R.color.myCustomColor));