我需要做的是让背景图像填满按钮的自然尺寸,因为没有指定背景并显示默认的灰色背景图像。但相反,我的按钮会缩放到背景图像的大小而不是文本。
之前有question,但没有人有解决方案。
按钮:
<Button
android:id="@+id/morebtn"
style="@style/CustomButton"
android:text="More" />
我有这个自定义按钮样式(灰色按钮是一个9补丁):
<resources>
<style name="CustomButton" parent="@android:style/TextAppearance">
<item name="android:textColor">#FFFFFF</item>
<item name="android:layout_marginLeft">10dip</item>
<item name="android:layout_marginRight">10dip</item>
<item name="android:layout_marginBottom">10dip</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
<item name="android:layout_centerInParent">true</item>
<item name="android:background">@drawable/greybutton</item>
<item name="android:textSize">20sp</item>
</style>
</resources>
现在它尽管被告知wrap_content,但它会在横向上填满屏幕。当我从Button样式中删除 android:background 时,按钮会缩小以按预期包装文本。
有谁知道为什么我的背景图片表现不像默认的Button背景?
答案 0 :(得分:5)
为什么不使用ImageButton:
<ImageButton android:src="@drawable/greybutton"
android:scaleType="fitCenter" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
然后您可以使用 scaleType 属性调整缩放比例。 唯一的缺点是你不能设置任何文字。
答案 1 :(得分:2)
该死。我有一个没有转换为9patch的hdpi drawable,并且由于某种原因,即使在我的mdpi屏幕上也被应用而不是mdpi drawables文件夹中的那个。毕竟,背景缩放确实按预期工作。遗憾!
(所以,如果你正在浏览这个类似问题的问题,请检查你的drawables文件夹以确保你正在绘制你认为你的样子。另外:不妨确定你的九个补丁中的内容边界是适当大小。注意它们与可伸展边界不同。)
答案 2 :(得分:1)
您可以尝试使用dip来编码按钮的高度和宽度。如果您需要更改按钮上的文本但这应该可以限制按钮扩展到图像的大小,这将是一个问题。当然,大图像会使按钮变大..宽度/高度是wrap_content,图像显然是内容的一部分...尝试硬编码宽度/高度参数。
答案 3 :(得分:1)
将这两项添加到CustomButton样式
<item name="android:minWidth">0dp</item>
<item name="android:minHeight">0dp</item>