【发布时间】: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? -
如果我增加按钮的大小,一切都会正常工作,因为增加它的高度会减少被截断的文本量。但是,正如我在另一条评论中所说,按钮占据的区域有足够的空间来完全显示文本,所以我不知道为什么我必须增加它的大小。而且,顺便说一句,由于布局限制,我不能这样做。