如何使用最新的 AppCompat 为按钮着色
How to tint Button using the Latest AppCompat
我需要知道使用最新的 AppCompat(目前为 23.2.1)为 Material 按钮 (AppCompatButton) 着色的最佳(和推荐)方法是什么。我从来没有想过它会如此令人沮丧!我尝试了 here 的大部分答案,但它们要么不起作用,要么产生了意想不到的结果。
我需要保持对 api >= 9 的向后兼容性并且只需要将连锁反应应用于 >=21 没什么特别的。那么目前为止最好的方法是什么?
如果您能同时提供 xml 和 java 代码,我将不胜感激。
有很多方法可以做到这一点。
我最喜欢的是:
<Button
android:id="@+id/activity_main_some_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.Button.Colored"
android:text="This is a button" />
这会自动使用您(希望)在主题中设置的强调色为按钮着色,同时将按下状态保持在 API < Lollipop and Ripple >= Lollipop。
如果没有别的办法,你可以自己给按钮上色:
AppCompatButton myExampleButton = new AppCompatButton(getContext());
myExampleButton.setSupportBackgroundTintList(ContextCompat.getColorStateList(getContext(),
R.color.some_color));
更新
您可以执行以下操作来使用自定义颜色:
<style name="MyButtonTheme" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/someColor</item>
</style>
定义具有所需颜色的新样式。
<Button
android:id="@+id/activity_main_some_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/MyButtonTheme"
android:text="This is a button" />
将其设置为您的按钮。
我需要知道使用最新的 AppCompat(目前为 23.2.1)为 Material 按钮 (AppCompatButton) 着色的最佳(和推荐)方法是什么。我从来没有想过它会如此令人沮丧!我尝试了 here 的大部分答案,但它们要么不起作用,要么产生了意想不到的结果。
我需要保持对 api >= 9 的向后兼容性并且只需要将连锁反应应用于 >=21 没什么特别的。那么目前为止最好的方法是什么?
如果您能同时提供 xml 和 java 代码,我将不胜感激。
有很多方法可以做到这一点。 我最喜欢的是:
<Button
android:id="@+id/activity_main_some_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="@style/Widget.AppCompat.Button.Colored"
android:text="This is a button" />
这会自动使用您(希望)在主题中设置的强调色为按钮着色,同时将按下状态保持在 API < Lollipop and Ripple >= Lollipop。
如果没有别的办法,你可以自己给按钮上色:
AppCompatButton myExampleButton = new AppCompatButton(getContext());
myExampleButton.setSupportBackgroundTintList(ContextCompat.getColorStateList(getContext(),
R.color.some_color));
更新
您可以执行以下操作来使用自定义颜色:
<style name="MyButtonTheme" parent="Widget.AppCompat.Button.Colored">
<item name="colorButtonNormal">@color/someColor</item>
</style>
定义具有所需颜色的新样式。
<Button
android:id="@+id/activity_main_some_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/MyButtonTheme"
android:text="This is a button" />
将其设置为您的按钮。