RelativeLayout,设置TextView的宽度

时间:2014-05-07 16:15:02

标签: android relativelayout textview

我有一个ListView,每行都是一个RelativeLayout,并排有两个TextViews(称之为textViewLeft和textViewRight)。

textViewRight文本可以在“xxxxxxx”和“yyy”之间切换(两种长度不同)。我想将textViewRight宽度设置为能够适合“xxxxxxx”,然后如果我将文本更改为“yyy”,我不希望textViewRight宽度发生变化。

我知道在我的xml中我可以将layout_width指定为特定值,但设备有很多不同的字体。那么有没有一种方法可以编程设置textViewwRight的宽度以确保它始终适合字符串“xxxxxxx”?

1 个答案:

答案 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;