Android TextView 中英文排版換行問題

安卓的TextView有一個問題,文本中中英文都有的時候會在出其不意的地方換行。
我的解決辦法就是在設置文本之后得到當前textView的文本可用寬度,然后將文本拆開一點點比較寬度,在臨界點上加上換行符。


下面就是我的解決方法:

 public void handlerText(final TextView tv) {
        final String textStr = tv.getText().toString(); //textView文本信息
        final Paint textPaint = tv.getPaint(); 
        final float tvWidth = tv.getWidth() - tv.getPaddingLeft() - tv.getPaddingRight(); //文本可用寬度
        Thread thread = new Thread(){//文本內(nèi)容可能比較多 這里開個子線程
            @Override
            public void run() {
                super.run();
                //將原始文本轉(zhuǎn)換為char數(shù)組
                char[] chars = textStr.toCharArray();
                StringBuilder sbNewText = new StringBuilder();
                int lineLength = 0;
                for (char cha : chars) {
                    int v = (int) textPaint.measureText(String.valueOf(cha));
                    lineLength += v;
                    if (lineLength <= tvWidth) {
                        //如果寬度沒超過文本可用寬度那就設置上去
                        sbNewText.append(cha);
                    } else {
                        sbNewText.append("\n");
                        sbNewText.append(cha);
                        lineLength = v;
                    }
                }
                //發(fā)消息替換文本
                Message message = new Message();
                message.what = 0;
                message.obj = sbNewText.toString();
                mHandler.sendMessage(message);

            }
        };
        thread.start();
    }

這樣做其實還是有缺點的,那就是文本最終設置可能不會那么及時,因為需要等到textView可用寬度確定,所以需要等到控件先設置好最開始的文本。而且文本內(nèi)容過多時可能要等待的時間更久。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容