解决Android的TextView和EditText换行问题

【声明】此文出自指尖飞落的博客:http://blog.csdn.net/huntersnail

——每天写一篇博客,每天做一点技术积累!

最近版本迭代的新增收货地址模块出现地址填写时点击换行,然后网络提交数据到后台,在地址列表查看地址时,也出现换行的问题。

问题效果图:

解决Android的TextView和EditText换行问题_第1张图片

1、分析原因

用Google的DHC工具进行网络模拟请求,发现返回数据结果如下:

解决Android的TextView和EditText换行问题_第2张图片


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"

③捕捉按回车键不换行

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, "");
            }
        }
    });
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆转载请注明出处☞指尖飞落的博客☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆


你可能感兴趣的:(☞Android☞)