1

我创建了一个以 9patch 图像为背景的按钮。在 9patch 图像中,我使用底部和右侧的线来指定内容区域/填充,以将文本定位在按钮上。这在 TextView 上效果很好,但在 Button 上,内容行似乎对文本位置没有影响。设置“paddingTop”/“paddingBottom”似乎也没有效果——只有“padding”才有效果。

这是我的布局 XML:

<Button 
            android:layout_width="450dp"
            android:layout_height="198dp"
            android:text="Some text here"
            android:gravity="center"
            android:background="@drawable/my_button"/>

有没有办法设置填充?也许我可以使用不同的视图而不是按钮?例如,我可以尝试只使用 TextView 并使其可点击,但我不确定这会产生什么其他副作用。

4

2 回答 2

3

明确设置android:padding="@null"解决了我的问题。

问题似乎是按钮(或我正在使用的主题中的一种样式)正在设置填充,它会覆盖按钮中的所有其他填充 - 背景可绘制中的填充,以及paddingToppaddingLeft

我的按钮布局现在定义如下:

<Button 
        android:layout_width="450dp"
        android:layout_height="198dp"
        android:text="Some text here"
        android:gravity="center"
        android:padding="@null"
        android:background="@drawable/my_button"/>

我的 IDE (IntelliJ IDEA 11.1) 发现它@null是一个错误,即使它已编译。将其设置为-1px也有效。

于 2012-04-04T11:34:39.503 回答
1

如果您使用 9-patch 图像作为背景,则填充和拉伸区域都在背景中定义。

如果您使用 draw9patch 工具,它会非常形象化:填充(间接)使用内容区域(右侧和底部的线)定义:http: //developer.android.com/guide/developing/tools/draw9patch.html

于 2012-04-04T10:47:20.550 回答