我可以声明一个主题和一个特定的按钮设计:
<style name="MyTheme" parent="android:style/Theme.Black">
<item name="android:buttonStyle">@style/Button.b1</item>
</style>
<style name="Button.b1" parent="android:style/Widget.Button">
<item name="android:textColor">#000000</item>
</style>
问题是此样式适用于所有按钮。我想声明一个具有自己风格的特定按钮,独立于其他按钮改变每个主题(类似于&#34; save&#34; -button)。任何的想法?
我尝试了以下内容:
<style name="Button.MyButton" parent="android:style/Widget.Button">
<item name="android:background">@drawable/shape</item>
</style>
<style name ="Button.MyButton.Theme1">
<item name="android:textColor">#000000</item>
</style>
<style name ="Button.MyButton.Theme2">
<item name="android:textColor">#FFFFFF</item>
</style>
<Button
android:id="@+id/save_button"
android:layout_width="0px"
style="@style/Button.MyButton"
android:layout_weight="1"
android:layout_height="wrap_content"
android:text="@string/save"/>
现在按钮独立于主题,但它也应该应用我在上面声明的样式属性。目前它只应用MyButton范围中声明的属性而不是MyButton.me1或MyButton.Theme2中的属性。
答案 0 :(得分:3)
如果您的主题MyTheme
仅用于定义按钮样式,请将其删除;同时从按钮中删除parent
属性:
<style name="Button.b1">
<item name="android:textColor">#000000</item>
</style>
然后在布局中,仅将样式用于您需要的按钮,如下所示:
<Button
android:id="@+id/btn_custom"
style="@style/Button.b1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</Button>
答案 1 :(得分:1)
您可以从MyTheme
删除styles.xml
声明,并在所选按钮的@style/Button.b1
属性中轻松设置android:style
:)
编辑:我想我终于得到了你要求的东西。我没有尝试过,但它应该有效:
<!-- Declare your themes here -->
<style name="Theme1" parent="android:style/Theme.Black"></style>
<style name="Theme2" parent="android:style/Theme.Black"></style>
<!-- Declare your "abstract" Button style -->
<style name="MyButton" parent="android:style/Widget.Button">
<item name="android:background">@drawable/shape</item>
</style>
<!-- Override MyButton style for Theme1 -->
<style name ="Theme1.MyButton" parent="@style/MyButton">
<item name="android:textColor">#000000</item>
</style>
<!-- Override MyButton style for Theme2 -->
<style name ="Theme2.MyButton" parent="@style/MyButton">
<item name="android:textColor">#FFFFFF</item>
</style>
答案 2 :(得分:0)
您应该仅将Button.b1
样式直接用于那些希望以这种方式设置样式的按钮。使用这些按钮“android:style
属性:
android:style="Button.b1"