2013-10-31 34 views
5

我的主要活动视图中有三个简单的按钮。 我想要做的是将按钮样式应用于所有按钮,但我没有这样做。不适用按钮的Android主题风格

这里是我的xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/minecraft_portrait" 
    android:alpha="0.75" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 

    <TextView 
     android:id="@+id/txtAppName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:text="@string/app_name_readable" 
     android:textSize="32sp" 
     android:textColor="@android:color/white" /> 

    <Button 
     android:id="@+id/btnCrafting" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:background="@drawable/button_selector" 
     android:onClick="craftingButtonClicked" 
     android:text="@string/crafting" /> 

    <Button 
     android:id="@+id/btnServerCommands" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@id/btnCrafting" 
     android:layout_below="@id/btnCrafting" 
     android:layout_marginTop="20dp" 
     android:background="@drawable/button_selector" 
     android:onClick="commandsButtonClicked" 
     android:textColor="@android:color/white" 
     android:text="@string/servercommands" /> 

    <Button 
     android:id="@+id/btnVideos" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:layout_alignLeft="@id/btnServerCommands" 
     android:layout_below="@id/btnServerCommands" 
     android:layout_marginTop="20dp" 
     android:background="@drawable/button_selector" 
     android:onClick="videosButtonClicked" 
     android:text="@string/videos" /> 

</RelativeLayout> 

这是因物我style.xml /值文件夹:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="AppBaseTheme" parent="android:Theme.Light"> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 
     <item name="android:buttonStyle">@style/ButtonTheme</item> 
    </style> 

    <style name="ButtonTheme" parent="android:Widget.Button"> 
     <item name="android:textColor">@android:color/white</item> 
     <item name="android:background">@android:color/darker_gray</item> 
     <item name="android:typeface">monospace</item> 
     <item name="android:textSize">32sp</item> 
    </style> 
</resources> 

而且从清单文件我的主题定义:

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

任何想法为什么样式不适用于我的按钮? 我已将一个按钮的textcolor设置为白色,以查看任何区别。

+0

可能是你的活动将覆盖应用主题。 – Bracadabra

回答

33

当使用支持库的按钮样式必须应用为:

<!-- Application theme. --> 
<style name="AppTheme" parent="AppBaseTheme"> 
    <item name="android:buttonStyle">@style/ButtonTheme</item> 
    <item name="buttonStyle">@style/ButtonTheme</item> 
</style> 

注意重复,但没有命名空间

+0

谢谢。这应该是一个被接受的答案。 –

+0

它工作!请罗比,接受这个非常有用的答案。 – TechNyquist

+0

使用支持库,只需要非命名空间的项目即可完成此项工作。没有必要重复 – yuval

3

您发布的代码正在工作。请在xml中的按钮上添加样式,以查看它是否适用于您。

<Button 
    style="@style/ButtonTheme" 

    android:id="@+id/btnCrafting" 
    android:layout_width="200dp" 
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:background="@drawable/button_selector" 
    android:onClick="craftingButtonClicked" 
    android:text="@string/crafting" /> 
+1

否风格不适用这种方式 – DerpyNerd

+1

从按钮中删除android:background =“@ drawable/button_selector”,然后重试。我不知道为什么这不起作用。也可以在模拟器上试试它。 – Dragan

0

尝试在更改样式或清单文件时在项目上运行“干净”。