我有一个ListView,每行都是一个RelativeLayout,并排有两个TextViews(称之为textViewLeft和textViewRight)。
textViewRight文本可以在“xxxxxxx”和“yyy”之间切换(两种长度不同)。我想将textViewRight宽度设置为能够适合“xxxxxxx”,然后如果我将文本更改为“yyy”,我不希望textViewRight宽度发生变化。
我知道在我的xml中我可以将layout_width指定为特定值,但设备有很多不同的字体。那么有没有一种方法可以编程设置textViewwRight的宽度以确保它始终适合字符串“xxxxxxx”?
答案 0 :(得分:-1)
嗯,没有简单的方法可以回答这个问题,您可以通过代码设置宽度,使用可用的宽度,您可以根据屏幕尺寸更改文本大小,有几种不同的解决方案。
这实际上取决于您处理应用的方式,您是否已经拥有不同的布局文件夹?如果是这样,为什么不尝试一些适合预期范围的尺寸呢?
无论哪种方式,您都应该计算它以适应较大的文本,而不是在文本更改时更改它。
更具体一点。一种解决方案是将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;