【发布时间】:2019-01-16 13:23:33
【问题描述】:
我正在尝试调整 Button 中的填充,以便当用户按下按钮时,文本会向下移动,以帮助直观地指示按下了。
styles.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Img_Button">
<item name="android:layout_width">@dimen/img_button_width</item>
<item name="android:layout_height">@dimen/img_button_height</item>
<item name="android:layout_marginTop">@dimen/img_button_marginTop</item>
<item name="android:layout_marginBottom">@dimen/img_button_marginTop</item>
<item name="android:paddingTop">@drawable/button_padtop_states</item>
<item name="android:paddingBottom">@drawable/button_padbottom_states</item>
<item name="android:background">@drawable/button_img_states</item>
<item name="android:gravity">center</item>
<item name="android:textColor">@drawable/button_txt_states</item>
<item name="android:textSize">@dimen/img_button_text_size</item>
<item name="android:textStyle">bold</item>
</style>
对于文本颜色,我可以使用 style.xml 文件中指示的选择器更改颜色
button_txt_states.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:color="@color/green_med" />
<item android:state_pressed="true" android:color="@color/white" />
<item android:state_focused="true" android:color="@color/white" />
<item android:color="@color/white" />
</selector>
因此,它们会根据按钮的状态更改按钮中的文本颜色。所以我想要完成的是分配不同的填充值,当用户按下按钮以直观地指示按下按钮时,这将使文本向下移动一点。我为 style.xml 文件中的 paddingTop 和 paddingBottom 值创建了一个选择器文件。
button_padtop_states.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:value="2dp" />
<item android:state_pressed="true" android:value="3dp" />
<item android:state_focused="true" android:value="2dp" />
<item android:value="2dp" />
</selector>
所以一切都编译好了,我可以在设备上启动应用程序,但崩溃了
E/AndroidRuntime(19515): Caused by: java.lang.UnsupportedOperationException:
Can't convert to dimension: type=0x3
我知道它会崩溃,因为无法将“值”转换为维度。所以现在我想知道是否有办法使用选择器和样式来调整按钮的填充,比如按钮上的颜色和可绘制对象?
谢谢。
【问题讨论】:
标签: android button styles selector padding