0

我正在以编程方式更改按钮的 backgroundDrawable:

myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.card_button_blue));

更改背景后,按钮中的文本不再像更改背景之前那样对齐。

更改背景前后的按钮
(来源:dsliga.eu

目标 SDK 版本是 10。谢谢。

4

2 回答 2

1

看起来 setText() 方法弄乱了对齐方式。更改文本后,重新应用重力和填充完成了这项工作:

myButton.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
myButton.setPadding(12, 12, 12, 12);
于 2014-01-14T21:36:05.163 回答
0

由于您使用的是 9patch,因此您需要用底线和右侧线指定数据在图形内的位置,您可能没有在 9patch 图形的底部和右侧画一条完整的线

这就是为什么按钮内的文本不再居中的原因,因为 9patch 的边界不是您认为的那样

您的 9patch 应该(通常),在右侧线的顶部和底部只留下 1 个像素,在底线的左右各留 1 个像素

重绘9patch,去掉gravity和padding的代码,看看能不能用

见下图

在此处输入图像描述

于 2014-01-14T21:50:51.430 回答