美文网首页Android开发Android开发Android技术知识
如何判断当前屏幕TextView是否会自动换行_Android提

如何判断当前屏幕TextView是否会自动换行_Android提

作者: Promise_Sun | 来源:发表于2022-04-29 17:44 被阅读0次

    文 | Promise Sun


    1.场景描述:

    有很多时候,产品或者UI会有各种奇葩要求,开发人员就得无条件满足。“真的很气哦!”
    比如产品说:“当手机屏幕内一行可以显示下所有文字内容时需要第1种UI效果显示;当手机屏幕内一行显示不下文字内容时,需要换其他(第2种)UI效果展示,自动换行太丑……”。
    注:文字内容不固定,不要自动换行的效果。第1种UI效果和第2种UI效果是完全不同的两种效果。)

    2. 分析:

    面对这样的需求,也不难。其实,就是根据当前手机屏幕的文字所在的TextView,去计算出所有文字内容显示出的宽度与TextView显示出的宽度,判断出文字是否会自动换行,然后在对应逻辑下做不同的UI显示就可以了。

    3. 功能实现

    1)首先,在布局文件xml中,需要给文字内容所在的TextView设置属性

    android:ellipsize="end"
    

    2)然后,通过addOnGlobalLayoutListene()方法判断是否触发属性ellipsize="end",再根据文本宽度是否大于TextView控件宽度,判断出是否文字内容会自动换行,在Activity或者Fragment中设置不同的UI效果。

        public void textViewOverFlowed(final TextView textView) {
            ViewTreeObserver vto = textView.getViewTreeObserver();
            vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
                @SuppressWarnings("deprecation")
                @Override
                public void onGlobalLayout() {
                    textView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
                    textView.getHeight();
                    double widthView = textView.getWidth();//控件宽度
                    double widthTextStr= textView.getPaint().measureText(textView.getText().toString());//文本宽度
                    LogUtil.e("文本宽度=============="+widthTextStr+"   控件宽度=============="+widthView);
                    if (widthTextStr > widthView) {//文本会自动换行
                        //此处显示需要换行时的第2种UI效果
                    } else {//文本无需换行
                        //此处显示无需换行时的第1种UI效果
                    }
                }
            });
        }
    

    版权声明:本文为博主原创文章,转载请点赞此文并注明出处,谢谢!

    相关文章

      网友评论

        本文标题:如何判断当前屏幕TextView是否会自动换行_Android提

        本文链接:https://www.haomeiwen.com/subject/nkbsyrtx.html