创建从应用程序主题中的默认样式集扩展的样式
Create style that extends from default style set in application theme
我在我的应用程序主题中设置了默认按钮样式,以便应用到应用程序中的每个按钮。
除了默认样式外,很少有按钮需要将其文本大写。所以我想做的是这样的
(以下代码片段不起作用,因为我无法设置 parent="?attr/materialButtonStyle"
):
<style name="capitalizedButton" parent="?attr/materialButtonStyle">
<item name="android:textAllCaps">true</item>
</style>
是否可以扩展 theme.xml 中定义的样式?我不想引用我在主题中设置的本地样式,因为它可以稍后更改,而是我打算使用主题属性访问它。
您可以直接将样式传递给您 XML 中的 Button
小部件,例如:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="capitalizedButton"/>
希望你能得到答案。如果不是请解释你的问题。
如果除了您的自定义默认按钮样式之外还发生大写,则无需将大写样式设为 ?attr/materialButtonStyle
的子样式(无论如何都不能这样做,因为 ?attr
引用了一个当前应用主题中的属性)。您可以阅读更多相关信息 here.
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="buttonStyle">@style/DefaultButton</item>
</style>
<style name="DefaultButton" parent="Widget.AppCompat.Button">
<item name="android:textColor">@color/white</item>
</style>
<style name="AllCapsButton">
<item name="android:textAllCaps">true</item>
</style>
layout.xml
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:theme="@style/AllCapsButton"/>
在上面的代码中,button
获取了主题应用的DefaultButton
样式(白色文本),以及布局文件应用的AllCapsButton
样式(大写文本)。
我在我的应用程序主题中设置了默认按钮样式,以便应用到应用程序中的每个按钮。
除了默认样式外,很少有按钮需要将其文本大写。所以我想做的是这样的
(以下代码片段不起作用,因为我无法设置 parent="?attr/materialButtonStyle"
):
<style name="capitalizedButton" parent="?attr/materialButtonStyle">
<item name="android:textAllCaps">true</item>
</style>
是否可以扩展 theme.xml 中定义的样式?我不想引用我在主题中设置的本地样式,因为它可以稍后更改,而是我打算使用主题属性访问它。
您可以直接将样式传递给您 XML 中的 Button
小部件,例如:
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
style="capitalizedButton"/>
希望你能得到答案。如果不是请解释你的问题。
如果除了您的自定义默认按钮样式之外还发生大写,则无需将大写样式设为 ?attr/materialButtonStyle
的子样式(无论如何都不能这样做,因为 ?attr
引用了一个当前应用主题中的属性)。您可以阅读更多相关信息 here.
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="buttonStyle">@style/DefaultButton</item>
</style>
<style name="DefaultButton" parent="Widget.AppCompat.Button">
<item name="android:textColor">@color/white</item>
</style>
<style name="AllCapsButton">
<item name="android:textAllCaps">true</item>
</style>
layout.xml
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button"
android:theme="@style/AllCapsButton"/>
在上面的代码中,button
获取了主题应用的DefaultButton
样式(白色文本),以及布局文件应用的AllCapsButton
样式(大写文本)。