2015-05-02 75 views
4

我正在嘗試自定義我的按鈕的外觀。 問題是,該按鈕不想更改其形狀。這意味着它仍然是尖銳的,而不是橢圓形。按鈕不會在選擇器中更改其形狀

button_selector.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="@color/green_bright"> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
      <corners android:radius="8dp"/> 
      <stroke android:color="@color/green_primary"/> 
      <padding android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp"/> 
     </shape> 
    </item> 
    <item android:drawable="@color/green"> 
     <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
      <corners android:radius="8dp"/> 
      <stroke android:color="@color/green_primary"/> 
      <padding android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp"/> 
     </shape> 
    </item> 
</selector> 

my_layout.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:paddingTop="8dp" 
    android:paddingBottom="8dp" 
    android:orientation="vertical">  
<Button android:id="@+id/button_id" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_weight="1" 
    android:text="@string/button_text" 
    android:textColor="@color/grey_dark" 
    android:background="@drawable/button_selector"/> 
</LinearLayout> 

解決

問題是,我declarated 繪製我n側

<item android:drawable="@color/..."/> 

這組固定的背景,它使背景不變,因此沒有形狀可以改變按鈕的屬性。背景顏色設置爲

<solid android:color="@color/blue"/> 

重要!您可以使用可繪製的,而不是顏色,但不是所有純色必須繪製如下

<solid android:drawable="@color/blue"/> 

更正button_selector.xml。

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

    <item android:state_pressed="true"> 
     <shape android:shape="rectangle"> 
      <solid 
       android:color="@color/blue_bright"/> 
      <corners 
       android:radius="20dp"/> 
      <stroke 
       android:color="@color/blue_primary" 
       android:width="2dp"/> 
      <padding 
       android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp"/> 
     </shape> 
    </item> 
    <item> 
     <shape android:shape="rectangle"> 
      <solid 
       android:color="@color/blue"/> 
      <corners 
       android:radius="20dp"/> 
      <stroke 
       android:color="@color/blue_primary" 
       android:width="2dp"/> 
      <padding 
       android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp"/> 
     </shape> 
    </item> 

</selector> 

這也是revelant,你可以用你的照片裏面扣不僅僅是把它放在:

<Button> 
    ... 
    android:src="@drawable/myPicture" 
</Button> 

回答

0

使用固體填充顏色和寬度增加中風。 類似這樣的:

<item> 
    <shape android:shape="rectangle"> 
     <solid android:color="#ff22cc84"/> 
     <corners android:radius="8dp"/> 
     <stroke android:width="2dp" android:color="#ff800424"/> 
     <padding android:bottom="4dp" android:left="4dp" android:right="4dp" android:top="4dp"/> 
    </shape> 
</item> 
+0

沒有什麼變化。所以..背景顏色工作正常,但形狀保持不變。 我已經添加了'',但是這已經改變了一切。我甚至猜不出銀彈可以在哪裏。 – murt

+0

你是什麼意思的形狀保持不變(沒有圓角)? 將半徑增加到更高的值,比如20dp。 <角落android:半徑=「20dp」/> – Manish

+0

我的意思是形狀保持鋒利/矩形。增加半徑不起作用。你認爲這個錯誤在_ @ drawable/button_selector_之外的某個地方? – murt