1

我有一个按钮,其上的文本需要水平居中对齐。当按钮没有 9 Patch 作为背景时,重力工作正常。但是,一旦我添加了一个 9 补丁作为背景,重力就会向左移动,并且无论重力设置如何,文本都不会改变。

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

任何输入?

4

5 回答 5

7

这是因为在您的 9-patch 图像中您已经分配了内容区域(见右下部分)。

通常 Right 和 Bottom 部分用于内容填充(可选),因此如果您想通过编程设置填充,则不要操纵 9 补丁的底部和右侧区域。

在此处输入图像描述

于 2012-11-06T04:44:29.040 回答
5

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

谢谢

于 2012-11-22T10:19:49.307 回答
1

这是解决此问题的另一种方法:Center Horizo​​ntaly and/or verticaly with 9 patch in Android

它使用RelativeLayout9-patch 背景并TextView放在里面。然后,您可以根据需要格式化和对齐文本,而不会破坏 9-patch 边距和填充。

于 2014-04-16T07:34:41.133 回答
1

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

于 2014-10-27T08:47:18.443 回答
0

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

我曾经忘记为按钮的按下状态设置 9-patch 图像内容区域,这以某种方式导致正常状态下的有线填充行为。

于 2017-05-15T04:00:17.463 回答