我有一个按钮,文本需要水平对齐。当按钮没有9补丁作为背景时,重力工作正常。但是,一旦我添加一个9补丁作为背景,重力向左移动,无论重力设置为何,文本都拒绝让步。
我已尝试将填充设置为0dip,-1px,@ null,如其他一些线程所示。他们都没有工作。我正在使用setBackgroundResource()从代码中更改背景,因为我的要求被固定到API级别8,因此设置背景的其他方法不是一个选项。此外,我不能使用选择器列表来执行此操作,因为我需要该按钮处于选中状态(如切换按钮)。
任何输入?
答案 0 :(得分:7)
这是因为在你的9补丁图像中你已经分配了内容区域(见右下方部分)。
一般来说,右边和底部是内容填充(可选)所以如果你想通过编程设置填充,那么不要操作9补丁的Bottom和Right区域。
答案 1 :(得分:5)
由于
答案 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补丁图像内容区域,这在某种程度上会导致正常状态下的有线填充行为。