如何避免文本在按钮上被切断?

问题描述:

我正在自定义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方法调用,事情不会改变。 我在做什么错?有任何想法吗?

+0

您可能想要在为按钮设置填充前将其添加到LayoutParams中?为什么填充解决方案“不适合[你]”? – matt5784 2012-07-26 21:51:17

+0

你用.setPadding只有0值?你有没有尝试填充没有RelativeLayout? – Ali 2012-07-26 22:05:01

+0

@ matt5784我无法将填充添加到'RelativeLayout.LayoutParams',因为我看不到任何合适的API。 @Ali我用了'.setPadding'和几个不同的值,但没有任何改变。 – marzapower 2012-07-26 22:15:29

你正在为按钮45(像素,我想)设置一个恒定的高度。然而,显然你正在试图放入的文本比android可以让你使用的空间更高。让你的按钮更高(通过改变LayoutParams),它将适合不切断。或者,使用较小的文字大小,以便文字更短,更合适。

+0

这正是我无法做到的。顺便说一下,按钮占用的区域有足够的空间来显示文本,但显然它没有正确显示。 – marzapower 2012-07-27 05:50:49

+0

请张贴截图。 – matt5784 2012-07-27 15:28:53

+0

P.S.如果您的布局是经过精确校准的,并且正在使用像素(而不是dp),则它只能在您正在测试的一个屏幕分辨率上工作......所以您的布局不会完美无瑕(除了在您的设备上) 。 – matt5784 2012-07-27 17:30:37