Android 解決Android的TextView和EditText換行問題

weixin_34054866發表於2016-09-28

最近版本迭代的新增收貨地址模組出現地址填寫時點選換行,然後網路提交資料到後臺,在地址列表檢視地址時,也出現換行的問題。

問題效果圖:

1、分析原因

用Google的DHC工具進行網路模擬請求,發現返回資料結果如下:

 

2、得出結果

是因為我輸入地址點選換行,沒換一次就會增加一個\n,那麼,就非常好處理了。

 

3、解決方法

在設定TextView文字的時候,用字串工具replace過濾一下就OK了!

TextView tv=(TextView)findViewById(R.id.tView);
tv.setText(shipAddress.getFullAddress().replace("\n", ""));

4、換行問題擴充套件

①要想不換行直接設定TextView的屬性:android:singleLine="true"(換行則false)

動態程式碼設定:

tv.setSingleLine(true);

②換行還可以設定TextView的寬度自適應型別:android:layout_width="wrap_content"

③捕捉按Enter鍵不換行

class MyTextView extends EditText
{
    ...
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        if (keyCode==KeyEvent.KEYCODE_ENTER) 
        {
            // Just ignore the [Enter] key
            return true;
        }
        // Handle all other keys in the default way
        return super.onKeyDown(keyCode, event);
    }
}

④設定監聽在輸入後進行過濾處理

myEditTextObject.addTextChangedListener(new TextWatcher() {
        public void onTextChanged(CharSequence s, int start, int before, int count) {

        }

        public void beforeTextChanged(CharSequence s, int start, int count,
                int after) {

        }

        public void afterTextChanged(Editable s) {
            for(int i = s.length(); i > 0; i--){

                if(s.subSequence(i-1, i).toString().equals("\n"))
                     s.replace(i-1, i, "");
            }
        }
    });

 

相關文章