2014-02-25 76 views
4

我想創建圓角按鈕。這是我的嘗試:圓角按鈕:我錯在哪裏

我已經定義按鈕的背景繪製button_bg.xml

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

     <shape> 
      <solid 
       android:color="#ef4444" /> 
      <stroke 
       android:width="1dp" 
       android:color="#992f2f" /> 
      <corners 
       android:radius="16dp" /> 
     </shape> 
    </item> 


    <item 
     android:state_pressed="true" 
     android:state_enabled="true" 
     android:drawable="@color/dark_grey" 
    > 
     <shape> 
      <solid 
       android:color="#ef4444" /> 
      <stroke 
       android:width="1dp" 
       android:color="#992f2f" /> 
      <corners 
       android:radius="16dp" /> 
     </shape> 
    </item> 


    <item 
     android:state_enabled="true" 
     android:drawable="@color/blue" 
    > 
     <shape> 
      <solid 
       android:color="#ef4444" /> 
      <stroke 
       android:width="1dp" 
       android:color="#992f2f" /> 
      <corners 
       android:radius="16dp" /> 
     </shape> 

    </item> 
</selector> 

然後,我把它應用到我的按鈕佈局文件:

<Button 
     android:text="@string/press_me" 
     android:layout_margin="12dp" 
     android:layout_width="fill_parent" 
     android:layout_height="30dp" 

     android:background="@drawable/button_bg" 
/> 

但我的按鈕仍然顯示爲尖角而不是圓形,爲什麼?

(請不要隨便扔我一個關於如何使圓角鏈接,我上面的代碼,後面這些教程,我只是想知道我錯了。謝謝)

+0

你錯了,你不說你的代碼的結果是 – pskink

+0

我的結果是一個尖角而不是圓角。 –

+0

嘗試刪除android:drawable =「@ color/*」 – pskink

回答

1

從刪除android:drawable item節點就像這樣。

<item android:state_pressed="true" 
     android:state_enabled="true"> 

編輯:(?我怎樣才能從指定的colors.xml顏色項目,然後)

爲您的按鈕文本顏色的狀態顏色繪製。

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" /> 
    <item android:state_focused="true" android:state_pressed="true" android:color="#000000" /> 
    <item android:state_focused="false" android:state_pressed="true" android:color="#000000" /> 
    <item android:color="#ffffff" /> 
</selector> 

然後將其設置爲您的按鈕的文本顏色。

android:textColor="@drawable/button_text_color" 
+0

如何從colors.xml指定顏色的項目呢? –

+0

您需要爲您的按鈕創建一個有狀態的顏色,就像您創建了有狀態的背景一樣。編輯添加此。 – Gaurav

1

移除item如下所有android:drawable那麼它會工作。

當您在item中添加屬性android:drawable時,此可繪製對象重疊了您創建的形狀。這就是爲什麼你看不到你的圓形。

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

    <item android:state_enabled="false"><shape> 
      <solid android:color="#ef4444" /> 

      <stroke android:width="1dp" android:color="#992f2f" /> 

      <corners android:radius="16dp" /> 
     </shape></item> 
    <item android:state_enabled="true" android:state_pressed="true"><shape> 
      <solid android:color="#ef4444" /> 

      <stroke android:width="1dp" android:color="#992f2f" /> 

      <corners android:radius="16dp" /> 
     </shape></item> 
    <item android:state_enabled="true"><shape> 
      <solid android:color="#ef4444" /> 

      <stroke android:width="1dp" android:color="#992f2f" /> 

      <corners android:radius="16dp" /> 
     </shape></item> 

</selector> 
+0

如何才能從colors.xml中爲物品指定顏色呢? –

+0

在這行''... change color as your wish。 –

+0

您的意思是在這種情況下沒有辦法直接從colors.xml資源獲取顏色? –