4

好的,我有一个按钮,它使用一个选择器作为其背景。我将宽度和高度设置为 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"/>
4

2 回答 2

12

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

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

于 2013-01-19T13:12:01.567 回答
0

在这里,您将按钮layout_width 声明为包装内容,因此它将宽度作为您在背景中设置的图像。

wrap_content

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

所以要克服这个问题,总是使用九个补丁图像作为背景或更改 dp 中的 layout_width。(例如 100dp)

于 2013-01-19T12:57:07.600 回答