2013-10-10 124 views
1

當我按下按鈕時,我有一個正常狀態下的3d查看按鈕,當我按下按鈕時,我希望它在左邊和頂部的3dp填充看起來像3d。但是,當我更改我的項目形狀的按下狀態的填充值時,即使按鈕處於正常狀態/未按下,填充中的更改也會顯示。在正常狀態下出現按鈕按狀態填充

我的按鈕看起來是這樣的:

enter image description here

而且我希望它看起來太像這樣在按下時:

enter image description here

btn_gray1.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" > 
     <shape> 
      <solid 
       android:color="#acacac" /> 
      <stroke 
       android:width="0dp" 
       android:color="#acacac" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 

      <solid android:color="#c2c2c2"/> 
      <stroke 
       android:width="0dp" 
       android:color="#c2c2c2" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="10dp" 
       android:top="10dp" 
       android:right="10dp" 
       android:bottom="10dp" /> 
     </shape> 
    </item> 
</selector> 

btn_gray2.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" > 
     <shape> 
      <solid 
       android:color="#acacac" /> 
      <stroke 
       android:width="0dp" 
       android:color="#acacac" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="0dp" 
       android:top="0dp" 
       android:right="3dp" 
       android:bottom="3dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 

      <solid android:color="#959595"/> 
      <stroke 
       android:width="0dp" 
       android:color="#959595" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="0dp" 
       android:top="0dp" 
       android:right="3dp" 
       android:bottom="3dp" /> 
     </shape> 
    </item> 
</selector> 

btn_gray.xml

<?xml version="1.0" encoding="utf-8"?> 
    <layer-list 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:drawable="@drawable/btn_gray2"/> 
     <item android:drawable="@drawable/btn_gray1"/> 
    </layer-list> 

回答

6

做這種方式

您在XML佈局按鈕

<Button 
      android:id="@+id/btn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="TUTORIAL" 
      android:padding="5dp" 
      android:textColor="@android:color/white" 
      android:background="@drawable/button_selector" /> 

創建一個選擇素TOR XML繪製文件夾內 button_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android" > 
     <item android:drawable="@drawable/button_background_one" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/button_backgroun_two" /> 

</selector> 

button_background_one.xml繪製文件夾內

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <shape> 
      <solid 
       android:color="#959595" /> 
      <stroke 
       android:width="0dp" 
       android:color="#959595" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="3dp" 
       android:top="3dp" 
       android:right="0dp" 
       android:bottom="0dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 

      <solid android:color="#c2c2c2"/> 
      <stroke 
       android:width="0dp" 
       android:color="#c2c2c2" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="3dp" 
       android:top="3dp" 
       android:right="0dp" 
       android:bottom="0dp" /> 
     </shape> 
    </item> 
</layer-list> 

button_backgroun_two.xml在繪製文件夾

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <shape> 
      <solid 
       android:color="#959595" /> 
      <stroke 
       android:width="0dp" 
       android:color="#959595" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="0dp" 
       android:top="0dp" 
       android:right="3dp" 
       android:bottom="3dp" /> 
     </shape> 
    </item> 
    <item> 
     <shape> 

      <solid android:color="#c2c2c2"/> 
      <stroke 
       android:width="0dp" 
       android:color="#c2c2c2" /> 
      <corners 
       android:radius="0dp" /> 
      <padding 
       android:left="0dp" 
       android:top="0dp" 
       android:right="3dp" 
       android:bottom="3dp" /> 
     </shape> 
    </item> 
</layer-list> 

這應該work.Try它

+1

這是很好的工作,並且看起來更容易管理我的代碼!謝謝! –