带有9-Patch背景的按钮不包含内容

时间:2013-01-19 12:53:42

标签: android button size custom-controls

好的我有一个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"/>

2 个答案:

答案 0 :(得分:12)

如果我理解你有一个巨大的9-Patch作为背景。

AFAIK,9-Patch可以延长但不减少。因此,您可能需要编辑9-Patch以使其尽可能小。通常,您可以将中心可扩展区域缩小到一个像素。

答案 1 :(得分:0)

在此声明按钮 layout_width为wrap 内容,因此它将宽度视为您在后台设置的图像。

wrap_content

将视图的大小设置为wrap_content将强制它仅扩展到足以包含它包含的值(或子控件)。对于控件 - 如文本框(TextView)或图像(ImageView) - 这将包装正在显示的文本或图像。对于布局元素,它将调整布局大小以适合作为其子项添加的控件/布局。

因此要克服此问题,请始终使用九个补丁图像到背景或更改dp中的layout_width。 (例如100dp)