我的自定义主题不适用于按钮

时间:2013-10-07 06:27:19

标签: android android-theme

我已经创建了一个自定义主题,其中包含以下XML表示:

<style name="ABTheme" parent="android:style/Theme">
      <item name="android:textColor" >#ffbb22</ item>
      <item name="android:background" >#ff1a557c</ item>
      <item name="android:button" >@style/ABButton</ item>
</style >

我在另一个XML文件中实现了 ABButton

<style name="ABButton" parent="android:Widget.Button">
    <item name="android:padding" >3dp</ item>
    <item name="android:background" >#121212</ item>
    <item name="android:textColor" >#ffffff</ item>
</style >

但是按钮样式不适用于按钮,按钮将具有默认的Android风格,有人可以告诉我如何解决这个问题
谢谢

请注意,我已将ABTheme应用于我的主要活动

4 个答案:

答案 0 :(得分:2)

将此添加到您的父样式

<item name="android:buttonStyle">@style/ABButton</item>

答案 1 :(得分:0)

// try this
**themes.xml**
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="ABTheme" parent="android:Theme">
        <item name="myButton">@style/ABButton</item>
    </style >
</resources>
**styles.xml**
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="ABButton" parent="android:Widget.Button">
        <item name="android:padding">3dp</item>
        <item name="android:background">#121212</item>
        <item name="android:textColor">#ffffff</item>
    </style >
</resources>
**attrs.xml**
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="myButton" format="reference" />
</resources>

**xml**
<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="My Custom Button"
 style="?myButton"/>

**AndroidManifest.xml**
<application
 android:label="@string/app_name"
 android:theme="@style/ABTheme"
 android:icon="@drawable/ic_launcher">
     // define your activity here
</application>

答案 2 :(得分:0)

在活动清单中添加android:theme="@style/mytheme"。例如

 <activity
        android:name="com.riverwalklabs.eggzammobile.YourActivity"
        android:theme="@style/mytheme" 
        android:label="@string/app_name"
        android:noHistory="true"
        android:screenOrientation="portrait" >
    </activity>

答案 3 :(得分:0)

问题是根主题随Honeycomb而改变。曾经是“android:style / Theme”的东西现在是“android:Theme.Holo”。同样,以前的“android:Widget.Button”现在是“android:Widget.Holo.Button”。

我看到的另一个问题是你使用“android:button”而不是“android:buttonStyle”。

您必须为API 11+创建一个样式,为旧设备创建另一个样式(除非您不打算支持比Honeycomb更早的任何内容)。然后,您必须将它们放在单独的资源文件夹中。

这将是这样的:

<强> RES /值/ style.xml:

<style name="ABTheme" parent="android:Theme">
      <item name="android:textColor" >#ffbb22</ item>
      <item name="android:background" >#ff1a557c</ item>
      <item name="android:buttonStyle">@style/ABButton</item>
</style >
<style name="ABButton" parent="android:Widget.Button">
    <item name="android:padding" >3dp</ item>
    <item name="android:background" >#121212</ item>
    <item name="android:textColor" >#ffffff</ item>
</style >

<强> RES /值-V11 / style.xml:

<style name="ABTheme" parent="android:Theme.Holo">
      <item name="android:textColor" >#ffbb22</ item>
      <item name="android:background" >#ff1a557c</ item>
      <item name="android:buttonStyle">@style/ABButton</item>
</style >
<style name="ABButton" parent="android:Widget.Holo.Button">
    <item name="android:padding" >3dp</ item>
    <item name="android:background" >#121212</ item>
    <item name="android:textColor" >#ffffff</ item>
</style >