我正在以编程方式更改按钮的 backgroundDrawable:
myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.card_button_blue));
更改背景后,按钮中的文本不再像更改背景之前那样对齐。
(来源:dsliga.eu)
目标 SDK 版本是 10。谢谢。
我正在以编程方式更改按钮的 backgroundDrawable:
myButton.setBackgroundDrawable(getResources().getDrawable(R.drawable.card_button_blue));
更改背景后,按钮中的文本不再像更改背景之前那样对齐。
(来源:dsliga.eu)
目标 SDK 版本是 10。谢谢。
看起来 setText() 方法弄乱了对齐方式。更改文本后,重新应用重力和填充完成了这项工作:
myButton.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
myButton.setPadding(12, 12, 12, 12);
由于您使用的是 9patch,因此您需要用底线和右侧线指定数据在图形内的位置,您可能没有在 9patch 图形的底部和右侧画一条完整的线
这就是为什么按钮内的文本不再居中的原因,因为 9patch 的边界不是您认为的那样
您的 9patch 应该(通常),在右侧线的顶部和底部只留下 1 个像素,在底线的左右各留 1 个像素
重绘9patch,去掉gravity和padding的代码,看看能不能用
见下图