2013-10-10 80 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

这是很好的工作,并且看起来更容易管理我的代码!谢谢! –