【问题标题】:How can avoid text from being cut off on a button?如何避免按钮上的文本被截断?
【发布时间】:2012-07-25 13:53:46
【问题描述】:

我正在自定义 Android 中的一个按钮,更改其背景(使用 9patch png 文件)并更改其字体。我将按钮放在RelativeLayout 中,因为我需要在自定义布局中精确定位和标注该项目的尺寸。我正在以编程方式完成所有这些工作(从创建到设置和显示)。

我发现this question 有同样的问题,但该解决方案对我不起作用。我用过

continueBtn.setPadding(0,0,0,0);

但图形输出保持不变。视图中一半以上的文本被截断。

我使用的代码摘录如下:

Button continueBtn = new Button(getContext());
p = new RelativeLayout.LayoutParams(width, 45);
p.addRule(CENTER_HORIZONTAL);

continueBtn.setLayoutParams(p);
continueBtn.setTypeface(...);
continueBtn.setTextSize(14);
outerLayout.addView(continueBtn);
continueBtn.setPadding(0, 0, 0, 0);

无论我把setPadding 方法调用放在哪里,事情都不会改变。 我究竟做错了什么?有什么想法吗?

【问题讨论】:

  • 您可能想在为按钮设置它们之前向 LayoutParams 添加填充?为什么填充解决方案“不适用于 [you]”?
  • 您使用 .setPadding 时只有 0 值?您是否尝试过不使用 RelativeLayout 进行填充?
  • @matt5784 我无法为RelativeLayout.LayoutParams 添加填充,因为我看不到任何合适的 API。 @Ali 我使用了 .setPadding 和几个不同的值,但没有任何改变。
  • setGravity 方法有什么作用吗?另外,可以尝试setTextSize 看看是否有帮助...实际上,您是否尝试将p = new RelativeLayout.LayoutParams(width, 45); 行更改为 50 或 55 而不是 45?
  • 如果我增加按钮的大小,一切都会正常工作,因为增加它的高度会减少被截断的文本量。但是,正如我在另一条评论中所说,按钮占据的区域有足够的空间来完全显示文本,所以我不知道为什么我必须增加它的大小。而且,顺便说一句,由于布局限制,我不能这样做。

标签: android button


【解决方案1】:

您正在为 45 的按钮设置一个恒定的高度(我猜是像素)。但是,显然您尝试输入的文本高于 android 允许您使用的空间量。使您的按钮更高(通过更改 LayoutParams),它将适合而不切断。或者,使用较小的文本大小,以使文本更短且更合适。

【讨论】:

  • 这正是我做不到的。顺便说一句,按钮占据的区域有足够的空间来完全显示文本,但显然它没有正确显示。
  • P.S.如果您的布局经过精确校准,并且使用的是像素(而不是 dp),那么它只能在您正在测试的一种屏幕分辨率上工作......所以您的布局无论如何都不会完美(除了在您的设备上) .
  • 显然我会将所有尺寸更改为dp,因为我将在 6-7 种不同的设备上对其进行测试 :)
  • 你错过了我之前的评论...Post a screenshot, please. – matt5784 2 hours ago你也没有解决我关于更改文本大小的建议。 IIRC,按钮具有少量的固有填充,因此文本位于边框内。
猜你喜欢
  • 1970-01-01
  • 2011-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 2015-12-09
  • 1970-01-01
相关资源
最近更新 更多