繁体   English   中英

RelativeLayout,设置TextView的宽度

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM