好的我有一个Button,它使用一个选择器作为它的背景。我将宽度和高度设置为wrap_content。内容是我设置的一些文字。我希望按钮在文本周围像原生按钮一样大小,但按钮很大,基本上看起来和它的源图像一样大。按钮图像是九个补丁图像,按钮xml在相对布局内。我在这里缺少什么?
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/holo_btn" />
<item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/holo_btn" />
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/holo_btn" />
<item android:drawable="@drawable/holo_btn" />
</selector>
<Button android:id="@+id/btnTaskPriorityLow"
android:paddingLeft="@dimen/paddingSmallButton" android:paddingRight="@dimen/paddingSmallButton"
android:text="@string/strTaskPriorityLow"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_below="@id/textViewCalColor"
android:layout_toRightOf="@+id/textViewPriority"
android:layout_marginTop="@dimen/marginTopAppt"
android:background="@drawable/button_holo_sel"/>
答案 0 :(得分:12)
如果我理解你有一个巨大的9-Patch作为背景。
AFAIK,9-Patch可以延长但不减少。因此,您可能需要编辑9-Patch以使其尽可能小。通常,您可以将中心可扩展区域缩小到一个像素。
答案 1 :(得分:0)
在此声明按钮 layout_width为wrap 内容,因此它将宽度视为您在后台设置的图像。
wrap_content
将视图的大小设置为wrap_content将强制它仅扩展到足以包含它包含的值(或子控件)。对于控件 - 如文本框(TextView)或图像(ImageView) - 这将包装正在显示的文本或图像。对于布局元素,它将调整布局大小以适合作为其子项添加的控件/布局。
因此要克服此问题,请始终使用九个补丁图像到背景或更改dp中的layout_width。 (例如100dp)