为图像应用样式的最佳方法是什么。即,我使用图像作为按钮。当我专注于它,我点击它,我释放按钮应该适用不同的样式。我可以将不同的图像用于不同的目的。但它不是一个可行的解决方案。
答案 0 :(得分:3)
为什么不用按钮作为按钮?
只需设置attrs.xml中的按钮样式。例如:
<style name="MyButton.Standard" parent="@android:style/Widget.Button">
<item name="android:textColor">#FFFFFF</item>
<item name="android:textStyle">bold</item>
<item name="android:background">@drawable/btn_gfx</item>
<item name="android:focusable">true</item>
<item name="android:clickable">true</item>
</style>
要使用此功能,只需将样式应用于布局中的按钮:
style="@style/MyButton.Standard"
btn_gfx.xml是StateList drawable
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:state_pressed="true"
android:state_enabled="false"
android:drawable="@drawable/btn_tab_pressed_disabled" />
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/btn_tab_pressed" />
<item
android:state_enabled="false"
android:drawable="@drawable/btn_tab_disabled" />
<item
android:state_enabled="true"
android:drawable="@drawable/btn_tab_default" />
</selector>
如果需要,您可以为更多状态添加图形 - 请查看Android文档。
如果您想在应用程序的任何位置使用相同的系统按钮而不是在每个按钮上应用样式,则可以创建自定义主题。一个例子(没有TitleBar):
<style name="MyTheme" parent="@android:style/Theme.NoTitleBar">
<item name="android:buttonStyle">@style/MyButton.Standard</item>
</style>
然后只需将主题应用于您的Application对象(或者 - 如果您只想将它应用于单个Activity,则将其应用于您的Activity)。
您可以使用与Button组件完全相同的方式设置ImageButton组件的样式。当你开始玩它时,这是一个非常强大的系统。
答案 1 :(得分:2)
这是通过在XML文件中指定普通,聚焦和按下状态来完成的(使用State ListDrawable)。
StateListDrawable是一个用XML定义的可绘制对象,它使用一个 几个不同的图像代表相同的图形,取决于 对象的状态。例如,Button小部件可以存在于一个小部件中 几种不同的状态(按压,聚焦或者不同)和使用 一个状态列表可绘制,您可以提供不同的背景图像 对于每个州。
例如,您可以在res/drawable
中创建以下xml文件,我们称之为selector.xml:
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/ic_btn_pressed"
android:state_pressed="true" />
<item android:drawable="@drawable/ic_btn_focused"
android:state_focused="true" />
<item android:drawable="@drawable/ic_btn_normal" />
</selector>
稍后您可以将其设置为按钮的背景。
<Button
android:background="@drawable/selector"
/>