1. 设置布局文件activity_textview.xmljava
<?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实现。android
另外还要在Activity中调用setMovementMethod方法。app
2. LogActivityide
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线程。布局