添加9-patch作为按钮背景后无法对齐文本

时间:2012-11-06 04:41:15

标签: android button background nine-patch

我有一个按钮,文本需要水平对齐。当按钮没有9补丁作为背景时,重力工作正常。但是,一旦我添加一个9补丁作为背景,重力向左移动,无论重力设置为何,文本都拒绝让步。

我已尝试将填充设置为0dip,-1px,@ null,如其他一些线程所示。他们都没有工作。我正在使用setBackgroundResource()从代码中更改背景,因为我的要求被固定到API级别8,因此设置背景的其他方法不是一个选项。此外,我不能使用选择器列表来执行此操作,因为我需要该按钮处于选中状态(如切换按钮)。

任何输入?

5 个答案:

答案 0 :(得分:7)

这是因为在你的9补丁图像中你已经分配了内容区域(见右下方部分)。

一般来说,右边和底部是内容填充(可选)所以如果你想通过编程设置填充,那么不要操作9补丁的Bottom和Right区域。

enter image description here

答案 1 :(得分:5)

每次我以编程方式设置背景后,我必须将填充设置为0!这解决了我的问题。

由于

答案 2 :(得分:1)

以下是解决此问题的另一种方法:Center horizontaly and/or verticaly with 9 patch in Android

它使用RelativeLayout 9补丁背景和TextView放入其中。然后,您可以根据需要格式化和对齐文本,而不会破坏9-patch marigins和padding。

答案 3 :(得分:1)

android:padding="0dp"添加到Button为我工作。

答案 4 :(得分:0)

检查并为该按钮背景的每个状态分配9个补丁图像内容区域。

我曾经忘记为按钮的按下状态设置9补丁图像内容区域,这在某种程度上会导致正常状态下的有线填充行为。