2016-12-09 7 views
1

ボタンの色とボタンの背景色の両方を変更しようとしています。背景は完全に機能しますが、テキストはピンク色(デフォルトのcolorPrimary、これは変更済みです)として表示されます。Androidボタンのテキストカラー常にピンク

res/drawable/map_button_background.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="false"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="4dp"/> 
      <solid android:color="@android:color/transparent"/> 
     </shape> 
    </item> 

    <item android:state_selected="true"> 
     <shape android:shape="rectangle"> 
      <corners android:radius="4dp"/> 
      <solid android:color="@color/colorPrimary"/> 
     </shape> 
    </item> 
</selector> 

res/drawable/map_button_text.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="false"> 
     <color android:color="@color/colorPrimary"/> 
    </item> 

    <item android:state_selected="true"> 
     <color android:color="@android:color/white"/> 
    </item> 
</selector> 

res/styles/styles.xml

<style name="Button.Map"> 
    <item name="android:layout_height">0dp</item> 
    <item name="android:layout_weight">1</item> 
    <item name="android:layout_margin">4dp</item> 
    <item name="android:background">@drawable/map_button_background</item> 
    <item name="android:textColor">@drawable/map_button_text</item> 
</style> 

また、テキストの色が変わることはありません、それだけでピンクのすべての時間をご利用いただけます。私は<item android:color="@color:/colorPrimary"/>をデフォルトとして使用して追加しようとしましたが、それでも動作しません。

何が原因なのかについてのアイデアはありますか?

答えて

4

あなたにはいくつか問題があります。

まず、<item>要素にはandroid:colorという属性が、子要素ではなく<color>要素に直接含まれている必要があります。

第2に、android:textColorは、カラーリソース(またはリテラルカラー値)を参照する必要があります。

あなたのmap_button_textリソースは、res/drawableフォルダに配置されています。これは、Androidに色ではなく描画可能と解釈するように指示しています。

res/colorにファイルを移動し、@color/map_button_textでそれを参照すると、必要なものを取得する必要があります。

最後に、セレクタのデフォルト状態(android:state_の属性がないセレクタ)も定義する必要があります。

最終的なXMLは次のようにsomethignになります。

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:color="@color/colorPrimary" android:state_selected="false"/> 

    <!-- Default state --> 
    <item android:color="@android:color/white"/> 
</selector> 
関連する問題