【问题标题】:Buttons text is not aligned any more after changing the BackgroundDrawable更改 BackgroundDrawable 后,按钮文本不再对齐
【发布时间】:2014-02-03 03:15:13
【问题描述】:

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

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

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


(来源:dsliga.eu

目标 SDK 版本为 10。 谢谢。

【问题讨论】:

  • 你在用 9patch 作为可绘制对象吗?还是普通的 PNG 文件?
  • 我使用的是 9patch PNG。

标签: android android-layout button background-drawable


【解决方案1】:

看起来 setText() 方法弄乱了对齐方式。更改文本后,重新应用重力和填充就可以了:

myButton.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL);
myButton.setPadding(12, 12, 12, 12);

【讨论】:

  • 仍然不是 100% 满意。这解决了按钮中文本的对齐问题,但按钮会被拉伸。我在表格布局中有 12 个按钮,但是在更改 BackgroundDrawable 后,行中的按钮并不一样大。其中一些比其他的短。
【解决方案2】:

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

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

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

重绘9patch,去掉gravity和padding的代码,看看是否有效

见下图

【讨论】:

  • 刚刚添加了 2 条额外的黑线(我只有顶部和左侧的线),但这并没有解决问题。我在按钮中的文本没有正确对齐。我不得不放回重力和填充代码。
猜你喜欢
  • 1970-01-01
  • 2013-03-02
  • 2013-10-21
  • 2018-09-01
  • 2013-08-20
  • 2012-06-08
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多