我有一个由选择器在3种状态下制作的自定义按钮:正常,按下和禁用。我的按钮下面有一个小图层,使它们显示为3d。 我的问题是,当按钮进入按下状态时,我希望它使填充更改(例如从顶部的0dp到顶部的5dp)。我尝试了几种解决方案,但它不起作用。 这是我的代码: 我的选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:variablePadding="true" >
<item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/button_disabled" android:state_enabled="false" />
<item android:drawable="@drawable/button_normal" />
</selector>
以下是状态和阴影可绘制:
影:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="@dimen/corner_radius" />
<solid android:color="@color/buttonshadow" />
</shape>
正常:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_shadow" />
<item >
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:radius="11dp"
/>
<solid
android:color="@color/buttonColor"
/>
</shape>
</item>
</layer-list>
压:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#00000000"/>
<padding
android:left="3dp"
android:top="3dp"
android:right="0dp"
android:bottom="0dp" />
</shape>
</item>
<item>
<shape android:shape="rectangle">
<corners android:radius="@dimen/corner_radius" />
<solid android:color="@color/buttonColor" />
<padding
android:left="3dp"
android:top="3dp"
android:right="0dp"
android:bottom="0dp" />
</shape>
</item>
</layer-list>
我的按钮用法:
android:id="@+id/btn_gologin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello"
style="@style/MyButton"
和我的风格:
<style name="MyButton" >
<item name="android:background">@drawable/button_selector</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="android:textColor">@color/black</item>
<!-- theme UI controls like checkboxes and text fields -->
<item name="colorAccent">@color/colorAccent</item>
<item name="android:textSize">20sp</item>
<item name="android:textAllCaps">false</item>
</style>
答案 0 :(得分:0)
您没有在按钮中设置更改
假设此文件的名称是 myCustomButton.xml
version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" android:variablePadding="true" >
<item android:drawable="@drawable/button_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/button_disabled" android:state_enabled="false" />
<item android:drawable="@drawable/button_normal" />
</selector>
然后您的按钮用法将
<android:id="@+id/btn_gologin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Hello"
android:background="@drawable/myCustomButton"/>