在开发过程中,textView作为收到信息的显示窗口,还是比较好用的
但,可能会遇到困扰:
收到的信息行数多了,textView只显示历史信息
新手可能有以下疑问。
Q:新的信息还在收吗?
A:还在收。
Q:怎么把新收信息展示出来?
A:设置自动滚动
Q:容易实现吗?
A:非常easy
思路整理如下:
- 找到textView控件,并设置滚动方式。
- 把新增显示内容给到textView
- textView自动滚动至最后
详细步骤如下:
1、找到textView控件,并设置滚动方式。
TextView recieveInfo;
recieveInfo = findViewById(R.id.recieveInfo); recieveInfo.setMovementMethod(ScrollingMovementMethod.getInstance());//设置滚动方式
2、把新增显示内容给到textView
recieveInfo.append(new String(buffer, 0, len) + "\r\n");
解释一下:我给到textView的内容是socket接收内容,所以buffer,len如下。 //final byte[] buffer = new byte[1024];//创建接收缓冲区 //inputStream = socket.getInputStream(); //final int len = inputStream.read(buffer);//数据读出来,并且返回数据的长度
3、textView自动滚动至最后
//使用textView的scrollTo(int,int)方法自动滚动至最后 int offset=recieveInfo.getLineCount()*recieveInfo.getLineHeight(); if(offset>recieveInfo.getHeight()) { recieveInfo.scrollTo(0,offset-recieveInfo.getHeight()); }
此处,可以有掌声