Android RelativeLayout,设置TextView的宽度

Android RelativeLayout,设置TextView的宽度,android,android-relativelayout,textview,Android,Android Relativelayout,Textview,我有一个列表视图,每一行都是一个相对的视图,有两个并排的文本视图(分别称为textViewLeft和textViewRight) textViewRight文本可以在“xxxxxxx”和“yyy”之间更改(两种长度都不同)。我想将textViewRight宽度设置为适合“xxxxxxx”,然后如果我将文本更改为“yyy”,我不想更改textViewRight宽度 我知道,在我的xml中,我可以将布局宽度指定为特定的值,但设备有很多不同的字体。那么,有没有一种方法可以通过编程设置textVieww

我有一个列表视图,每一行都是一个相对的视图,有两个并排的文本视图(分别称为textViewLeft和textViewRight)

textViewRight文本可以在“xxxxxxx”和“yyy”之间更改(两种长度都不同)。我想将textViewRight宽度设置为适合“xxxxxxx”,然后如果我将文本更改为“yyy”,我不想更改textViewRight宽度


我知道,在我的xml中,我可以将布局宽度指定为特定的值,但设备有很多不同的字体。那么,有没有一种方法可以通过编程设置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;

如果你不知道答案,那为什么要贴这个?