基于theme.appcompat派生主题

时间:2014-03-15 09:13:15

标签: android android-layout

我想从theme.appcompat派生一个主题。在那个主题中,我想设置自定义按钮样式。按钮代码如下。如何将它们添加到我创建的主题中以及如何创建该主题。我需要在哪些文件中包含res / values / style旁边的主题。下面的代码位于res / drawable文件夹中,名称为red_button.xml。

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_pressed="true"
    android:drawable="@drawable/componentstyles_btn_default_pressed_holo_light" />

<item android:state_focused="true" 
    android:drawable="@drawable/componentstyles_btn_default_focused_holo_light" />

<item
    android:drawable="@drawable/componentstyles_btn_default_normal_holo_light" />
</selector>

现在res / value / styles中的代码是

<resources>
<style name="MyTheme" parent="Theme.AppCompat.Light">
<item name="android:buttonStyle">@style/MyButton</item>
</style>

<style name="MyButton" parent="android:Widget.Button">
<item name="android:background">@drawable/red_button</item>
</style>
</resources>

清单就像这样:

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/MyTheme" >

1 个答案:

答案 0 :(得分:1)

res/values文件夹中,您要创建文件styles.xml,并指定

<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!--Custom styles here -->
</style>

您要显示的选择器可以放在res/drawable文件夹中。如果您想将其应用于所有按钮,您可能需要执行以下操作:

<style name="MyTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:buttonStyle">@style/MyButton</item>
</style>

<style name="MyButton" parent="android:Widget.Button">
    <item name="android:background">@drawable/your_selector</item>
</style> 

要启用自定义主题,请将其应用于AndroidManifest.xml到特定Activity或整个应用,例如:

<application android:label="@string/app_name"
             android:icon="@drawable/ic_launcher"
             android:theme="@style/MyTheme">