我采用了与此处所述方法不同的方法,并且效果很好,所以我想分享一下。
我正在使用一种样式来创建一个自定义按钮,其图像在左侧,文本在右侧中心。只需遵循以下4个“简单步骤”:
I.使用至少3个不同的PNG文件和位于/YOUR_OWN_PATH/android-sdk-mac_x86/tools/./draw9patch的工具创建9个补丁。之后,您应该具有:
button_normal.9.png,button_focused.9.png和button_pressed.9.png
然后下载或创建24x24 PNG图标。
ic_your_icon.png
将所有内容保存在Android项目的drawable /文件夹中。
二。在您的项目的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" />
三,转到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样式中的drawableLeft更改为drawableRight,drawableTop或drawableBottom,可以将图标相对于文本放置在其他位置。
IV。转到具有UI的XML的layout /文件夹,然后转到要应用样式并使其如下所示的Button:
<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准则。
您还可以为您的应用创建主题,并向其添加“父样式”,以便所有按钮看起来相同,并仅在需要的地方应用带有图标的“子样式”。