1. 设置布局文件activity_textview.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/content"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="vertical"
android:fadeScrollbars="false" />
</LinearLayout>
android:scrollbars="vertical"为TextView设置滚动条,android:fadeScrollbars="false"设置滚动条不隐藏。也可用 ScrollView实现。
另外还要在Activity中调用setMovementMethod方法。
2. LogActivity
public class LogActivity extends Activity{
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_textview);
mTextView = (TextView)findViewById(R.id.content);
mTextView.setMovementMethod(ScrollingMovementMethod.getInstance());
new DataThread().start();
}
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg)
{
mTextView.setText((String)msg.obj);
}
};
class DataThread extends Thread{
@Override
public void run() {
while(true)
{
try
{
BufferedReader in = new BufferedReader(new FileReader("/sdcard/log"));
String line;
StringBuilder sb = new StringBuilder();
while((line = in.readLine()) != null)
{
sb.append(line+'\n');
}
mHandler.sendMessage(mHandler.obtainMessage(0, sb.toString()));
in.close();
Thread.sleep(2000);
} catch(IOException e){
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
这里要不断的获取文件内容更新UI,所以文件的操作另外开个线程运行,利用Hander发送数据到UI线程。