[英]RelativeLayout, setting width of TextView
我有一个ListView,每行是一个带有2个TextViews并排的RelativeLayout(将它们称为textViewLeft和textViewRight)。
textViewRight文本可以在“ xxxxxxx”和“ yyy”(两种长度)之间切换。 我想将textViewRight宽度设置为适合“ xxxxxxx”,然后如果我将文本更改为“ yyy”,我不希望textViewRight宽度发生变化。
我知道在xml中可以将layout_width指定为特定值,但是设备具有许多不同的字体。 因此,有没有一种方法可以通过编程设置textViewwRight的宽度以确保它始终适合字符串“ xxxxxxx”?
嗯,没有简单的答案可以解决,您可以通过代码设置宽度,使用可用的宽度,您可以根据屏幕大小来更改文本大小,有几种不同的解决方案。
这实际上取决于您如何处理应用程序,您是否已经拥有不同的布局文件夹? 如果是这样,为什么不尝试一些适合预期范围的尺寸呢?
无论哪种方式,您都应该从一开始就计算它以适合较大的文本,并且在文本更改时不要更改它。
更加具体。 一种解决方案是将Textview上的文本设置为xxxxxx,并将xml中的布局宽度设置为“ wrap_content”。 现在,您要做的就是在布局视图后获取视图的宽度,否则返回0。
确切地做到这一点的一种方法是在onCreate方法上向您的TextView添加一个viewtreeobserver:
ViewTreeObserver vto = yourTextView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
this.yourTextView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
int width = layout.getMeasuredWidth();
int height = layout.getMeasuredHeight();
}
});
现在您有了宽度,您所要做的就是将宽度更改为该固定值,以下应该可以工作:
yourTextView.getLayoutParams().width = theWidthYouGot;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.