具有不同背景和突出显示颜色的凸起和平按钮
Raised and flat buttons with different background and highlight colors
我正在使用 com.android.support:appcompat-v7:23.0.1
库创建应用程序。
我在values/styles.xml
中定义应用主题:
<style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="colorControlHighlight">@color/highlight_dark</item>
<item name="colorButtonNormal">@color/primary</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
</style>
<style name="AppTheme" parent="BaseAppTheme"></style>
我对凸起按钮使用 AppCompat Widget.AppCompat.Button.Colored
样式,对平面按钮使用 Widget.AppComap.Button.Borderless.Colored
样式。
colorAccent
主题属性定义凸起按钮背景颜色和平按钮文本颜色但我认为这是一个错误,因为这些颜色应该由 colorButtonNormal
属性定义,就像 [=17] =] 和 Widget.AppComap.Button.Borderless
样式。
colorControlHighlight
主题属性定义了两个按钮的 ripple
颜色。
问题是:
- 如何使用不同颜色的凸起按钮?例如,我想要带有主色和强调色的按钮。
- 我的强调色不浅,所以凸起的按钮有饱和的背景,
colorControlHighlight
应该是浅色 (#40ffffff
)。但是平面按钮有透明背景,colorControlHighlight
应该是深色的 (#40000000
)。如何为凸起按钮和扁平按钮设置不同的 ripple
颜色?
我在下面添加了我当前的解决方案,但我不禁觉得我错过了什么。
经过一些研究和谷歌搜索后,我为不同的凸起按钮和扁平按钮定义了单独的主题:
<style name="AppTheme.RaisedButton">
<item name="buttonStyle">@style/Widget.AppCompat.Button.Colored</item>
</style>
<style name="AppTheme.RaisedButton.Primary">
<item name="colorAccent">@color/primary</item>
</style>
<style name="AppTheme.RaisedButton.Accent">
</style>
<style name="AppTheme.FlatButton">
<item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless.Colored</item>
<item name="colorControlHighlight">@color/highlight_light</item>
</style>
<style name="AppTheme.FlatButton.Primary">
<item name="colorAccent">@color/primary</item>
</style>
<style name="AppTheme.FlatButton.Accent">
</style>
请注意,我使用的是 buttonStyle
属性而不是 android:buttonStyle
,因为它不适用于棒棒糖之前的设备。
在 android:theme
属性中使用这些主题:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_button"
android:theme="@style/AppTheme.FlatButton.Primary" />
我正在使用 com.android.support:appcompat-v7:23.0.1
库创建应用程序。
我在values/styles.xml
中定义应用主题:
<style name="BaseAppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primary_dark</item>
<item name="colorAccent">@color/accent</item>
<item name="colorControlHighlight">@color/highlight_dark</item>
<item name="colorButtonNormal">@color/primary</item>
<item name="android:textColorPrimary">@color/primary_text</item>
<item name="android:textColorSecondary">@color/secondary_text</item>
</style>
<style name="AppTheme" parent="BaseAppTheme"></style>
我对凸起按钮使用 AppCompat Widget.AppCompat.Button.Colored
样式,对平面按钮使用 Widget.AppComap.Button.Borderless.Colored
样式。
colorAccent
主题属性定义凸起按钮背景颜色和平按钮文本颜色但我认为这是一个错误,因为这些颜色应该由 colorButtonNormal
属性定义,就像 [=17] =] 和 Widget.AppComap.Button.Borderless
样式。
colorControlHighlight
主题属性定义了两个按钮的 ripple
颜色。
问题是:
- 如何使用不同颜色的凸起按钮?例如,我想要带有主色和强调色的按钮。
- 我的强调色不浅,所以凸起的按钮有饱和的背景,
colorControlHighlight
应该是浅色 (#40ffffff
)。但是平面按钮有透明背景,colorControlHighlight
应该是深色的 (#40000000
)。如何为凸起按钮和扁平按钮设置不同的ripple
颜色?
我在下面添加了我当前的解决方案,但我不禁觉得我错过了什么。
经过一些研究和谷歌搜索后,我为不同的凸起按钮和扁平按钮定义了单独的主题:
<style name="AppTheme.RaisedButton">
<item name="buttonStyle">@style/Widget.AppCompat.Button.Colored</item>
</style>
<style name="AppTheme.RaisedButton.Primary">
<item name="colorAccent">@color/primary</item>
</style>
<style name="AppTheme.RaisedButton.Accent">
</style>
<style name="AppTheme.FlatButton">
<item name="buttonStyle">@style/Widget.AppCompat.Button.Borderless.Colored</item>
<item name="colorControlHighlight">@color/highlight_light</item>
</style>
<style name="AppTheme.FlatButton.Primary">
<item name="colorAccent">@color/primary</item>
</style>
<style name="AppTheme.FlatButton.Accent">
</style>
请注意,我使用的是 buttonStyle
属性而不是 android:buttonStyle
,因为它不适用于棒棒糖之前的设备。
在 android:theme
属性中使用这些主题:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/my_button"
android:theme="@style/AppTheme.FlatButton.Primary" />