2013-10-31 30 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

嘗試在更改樣式或清單文件時在項目上運行「乾淨」。