【问题标题】:Change Button Shape on selected State?更改所选状态的按钮形状?
【发布时间】:2015-09-15 09:30:37
【问题描述】:
我有一个 Android 按钮:
<Button
android:layout_width="wrap_content"
android:layout_height="44dp"
android:background="@drawable/action_button" />
action_button.xml 是:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:left="25dp"
android:right="25dp"/>
<gradient
android:angle="0"
android:endColor="@color/whiteColor"
android:startColor="@color/whiteColor"/>
<corners android:radius="@dimen/borderRadius"/>
<stroke
android:width="2px"
android:color="@color/actionColor"/>
</shape>
按下按钮时如何更改形状?
【问题讨论】:
标签:
java
android
android-studio
android-button
【解决方案1】:
您好,请使用下面的选择器并根据您的需要进行更改
选择器.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="@drawable/cyan_strip" />
<item android:state_pressed="true"
android:drawable="@drawable/cyan_strip" />
<item android:state_pressed="false" android:state_focused="true"
android:drawable="@drawable/cyan_strip" />
<item android:drawable="@drawable/black_strip" /> -->
<item android:state_enabled="false">
<shape>
<solid
android:color="#4ec9d9" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<padding
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
<item android:state_pressed="true">
<shape>
<solid
android:color="#4ec9d9" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<padding
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
<item android:state_pressed="false" android:state_focused="true">
<shape>
<solid
android:color="#4ec9d9" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<padding
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
<item android:state_selected="true">
<shape>
<solid
android:color="#4ec9d9" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<padding
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
<item >
<shape>
<solid
android:color="#000000" />
<stroke
android:width="1dp"
android:color="#FFFFFF" />
<padding
android:left="1dp"
android:top="1dp"
android:right="1dp"
android:bottom="1dp" />
</shape>
</item>
</selector>
【解决方案2】:
你需要一个选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/action_button_pressed" />
<item android:drawable="@drawable/action_button" />
</selector>
将其放入xml 文件中的drawable/ 下,并将其用作Button 的背景。 Android 将负责其余的工作
【解决方案3】:
见:
Link
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<gradient
android:startColor="#302226"
android:endColor="#6D7B8D"
android:angle="45"/>
<padding android:left="6dp"
android:top="6dp"
android:right="6dp"
android:bottom="6dp" />
<corners android:radius="30dp" />
</shape>
或见:
<ImageButton
android:id="@+id/imageButton1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/shape_oval" />
Shape_oval 是一张我们可以从谷歌搜索中获取的图像,或者我们可以在 Paint 或 photoshop 中绘制自己的图像。