Android Studio 3.2.1 这是我的布局:
'number*[1-9]*'
要更改 MaterialButton的背景,我要在 styles.xml
中更改 colorAccent'number*[1-9]+'
好。工作。
但是问题是:我不想更改 colorAccent 。我想为 MaterialButton的使用与 colorAccent
不同的背景颜色属性:
<com.google.android.material.button.MaterialButton
android:id="@+id/bittrexJsonViewButton"
android:layout_width="0dp"
android:layout_height="@dimen/min_height"
android:layout_marginStart="@dimen/half_default_margin"
android:layout_marginEnd="@dimen/half_default_margin"
android:text="@string/json_view"
app:layout_constraintBottom_toBottomOf="@+id/binanceJsonViewButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/binanceJsonViewButton"
app:layout_constraintTop_toTopOf="@+id/binanceJsonViewButton" />
没有帮助。
答案 0 :(得分:8)
如果要设置自定义可绘制对象,则需要制作app:backgroundTint="@null"
。仅更改背景颜色app:backgroundTint="@color/yourColor"
我当前正在使用1.3.0-alpha01
<com.google.android.material.button.MaterialButton
android:id="@+id/bittrexJsonViewButton"
android:layout_width="0dp"
android:layout_height="@dimen/min_height"
android:layout_marginStart="@dimen/half_default_margin"
android:layout_marginEnd="@dimen/half_default_margin"
app:backgroundTint="@null"
android:background="@drawable/your_custom_drawable"
android:text="@string/json_view"
app:layout_constraintBottom_toBottomOf="@+id/binanceJsonViewButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/binanceJsonViewButton"
app:layout_constraintTop_toTopOf="@+id/binanceJsonViewButton" />
答案 1 :(得分:5)
使用新的Material Button,您有2个选择:
使用Zaid Mirza建议的backgroundTint
属性
我认为这是最好的选择。如果要从默认样式覆盖某些主题属性,则可以使用新的 materialThemeOverlay
属性。
类似的东西:
<style name="MtButtonStyle"
parent="Widget.MaterialComponents.Button">
<item name=“materialThemeOverlay”>@style/GreenButtonThemeOverlay</item>
</style>
<style name="GreenButtonThemeOverlay">
<item name="colorPrimary">@color/green</item>
</style>
它需要库的版本 1.1.0 (当前的最新版本是1.1.0-beta02
)。
答案 2 :(得分:5)
2020:看来他们只是在2020年4月1日解决了这个问题。
它应该从GitHub issue was closed as "Fixed"开始在1.2.0 beta 1上发布
答案 3 :(得分:2)
第一个解决方案
您可以使用app:backgroundTint
来更改MaterialButton
的背景色
<com.google.android.material.button.MaterialButton
android:id="@+id/bittrexJsonViewButton"
android:layout_width="0dp"
android:layout_height="@dimen/min_height"
android:layout_marginStart="@dimen/half_default_margin"
android:layout_marginEnd="@dimen/half_default_margin"
app:backgroundTint="@android:color/holo_orange_dark"
android:text="@string/json_view"
app:layout_constraintBottom_toBottomOf="@+id/binanceJsonViewButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/binanceJsonViewButton"
app:layout_constraintTop_toTopOf="@+id/binanceJsonViewButton" />
第二个解决方案
MaterialButton
在按钮处于活动状态时使用colorPrimary
作为背景,而在按钮处于禁用状态时使用colorOnSurface
。因此,您可以在主题中定义它,并将其应用到材质按钮上
答案 4 :(得分:1)
backgroundTint
还更改了禁用状态的颜色,因此对我不利
我能找到的最佳解决方案是通过覆盖样式覆盖 MaterialButton
(仅)的主要颜色
将此代码添加到您的样式中。
将 ?attr/colorSecondary
替换为您想要的任何颜色
<style name="MyButtonTheme" parent="Widget.MaterialComponents.Button">
<item name="materialThemeOverlay">@style/ButtonStyleTextColor</item>
</style>
<style name="ButtonStyleTextColor">
<item name="colorPrimary">?attr/colorSecondary</item>
</style>
给按钮添加主题
<com.google.android.material.button.MaterialButton
//..
android:theme="@style/MyButtonTheme"/>
如果您使用 MDC 并且想要更改所有按钮的主题:
将此行添加到您的 themes.xml
<item name="materialButtonStyle">@style/Button.MyTheme</item>
并将这些行添加到您的 type.xml
<style name="Button.MyTheme" parent="Widget.MaterialComponents.Button">
<item name="materialThemeOverlay">@style/ButtonStyleTextColor</item>
</style>
<style name="ButtonStyleTextColor">
<item name="colorPrimary">?attr/colorSecondary</item>
</style>
在这种情况下,您不需要将 android:theme="@style/MyButtonTheme"
添加到您的 MaterialButton
如果有任何错误请告诉我,不要急于降级
答案 5 :(得分:0)
将backgroundTintMode
更改为add
,然后将显示您的background
属性。请参见下面的示例:
<com.google.android.material.button.MaterialButton
android:id="@+id/bittrexJsonViewButton"
android:layout_width="0dp"
android:layout_height="@dimen/min_height"
android:layout_marginStart="@dimen/half_default_margin"
android:layout_marginEnd="@dimen/half_default_margin"
android:text="@string/json_view"
android:background:"#aabbcc"
app:backgroundTintMode="add"
app:layout_constraintBottom_toBottomOf="@+id/binanceJsonViewButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/binanceJsonViewButton"
app:layout_constraintTop_toTopOf="@+id/binanceJsonViewButton" />
答案 6 :(得分:0)
评论询问使用colorOnSurface禁用颜色,您需要使用主题设置,
赞:
<style name="MaterialRedButton"
parent="Widget.MaterialComponents.Button">
<item name="materialThemeOverlay">@style/MaterialRedButtonThemeOverlay</item>
</style>
<style name="MaterialRedButtonThemeOverlay">
<item name="colorPrimary">@android:color/holo_red_dark</item>
<item name="colorOnSurface">@color/white</item>
</style>
答案 7 :(得分:0)
BackgroundTint 始终适用于材质按钮,但首先,请卸载应用程序并重新安装。有时,在您重新安装应用之前,更改可能不会反映出来。
android:backgroundTint
应用于 android:background
和
他们的组合可以由android:backgroundTintMode
请检查此答案以了解 android:background
、android:backgroundTint
和 android:backgroundTintMode
之间的区别
答案 8 :(得分:0)
对我有用的解决方案如下所述:
按钮标签
<Button
android:id="@+id/login_btn"
style="@style/PrimaryButtonStyle"
app:backgroundTint="@null"
android:enabled="true"
android:text="@string/txtBtnLogin" />
@Style/PrimaryButtonStyle
<style name="PrimaryButtonStyle" parent="@style/Widget.MaterialComponents.Button">
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_marginTop">5dp</item>
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:background">@drawable/base_button_style</item>
<item name="textAllCaps">false</item>
<item name="android:textSize">16sp</item>
</style>
此输出 - 按钮背景(浅蓝色)与布局背景(比较深蓝色)不同
答案 9 :(得分:0)
您可以按照以下代码进行操作。
import numpy as np
matrix = np.zeros([5,5])
matrix[0][0] = 1
count = 0
while matrix[2][2] != 1:
count += 1
matrix[count][count] = matrix[0][0]
print(count)