我采取了一种不同于这里所述的方法,它真的很有效,所以我想分享它。
我正在使用样式创建一个自定义按钮,图像在左边,文本在中右。只需遵循以下4个“简单步骤”:
I.使用至少3个不同的PNG文件和工具创建9个补丁:/YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch。在这之后,你应该:
Button_normal.9.png, button_focused.9.png和button_pressed.9.png
然后下载或创建一个24x24的PNG图标。
ic_your_icon.png
保存在你的Android项目的drawable/文件夹中。
2在项目的drawable/文件夹下创建一个名为button_selector.xml的XML文件。状态应该是这样的:
<item android:state_pressed="true" android:drawable="@drawable/button_pressed" />
<item android:state_focused="true" android:drawable="@drawable/button_focused" />
<item android:drawable="@drawable/button_normal" />
3转到values/文件夹,打开或创建styles.xml文件,并创建以下XML代码:
<style name="ButtonNormalText" parent="@android:style/Widget.Button">
<item name="android:textColor" >@color/black</item>
<item name="android:textSize" >12dip</item>
<item name="android:textStyle" >bold</item>
<item name="android:height" >44dip</item>
<item name="android:background" >@drawable/button_selector</item>
<item name="android:focusable" >true</item>
<item name="android:clickable" >true</item>
</style>
<style name="ButtonNormalTextWithIcon" parent="ButtonNormalText">
<item name="android:drawableLeft" >@drawable/ic_your_icon</item>
</style>
ButtonNormalTextWithIcon是一个“子样式”,因为它扩展了ButtonNormalText(“父样式”)。
注意,将ButtonNormalTextWithIcon样式中的drawablleft更改为drawableRight, drawableTop或drawableBottom,您可以将图标放在相对于文本的其他位置。
IV.转到你有UI XML的布局/文件夹,然后转到你想应用样式的按钮,让它看起来像这样:
<Button android:id="@+id/buttonSubmit"
android:text="@string/button_submit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/ButtonNormalTextWithIcon" ></Button>
和…瞧!你的按钮在左边有一个图像。
对我来说,这是更好的方法!因为这样做,你可以管理按钮的文本大小与你想要显示的图标分开,并使用相同的背景绘制几个按钮与不同的图标,尊重Android UI指南使用风格。
你也可以为你的应用程序创建一个主题,并添加“父样式”,这样所有的按钮看起来都是一样的,并只在你需要的地方应用“子样式”的图标。