我有一个TextView,其内容是从文本文件中复制的。现在每次将文本文件的内容加载到TextView中时,我希望它自动向下滚动到最后。 这就是我的布局XML文件的那部分:
<ScrollView
android:id="@+id/scroller"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:layout_above="@+id/command"
android:layout_alignParentLeft="true"
android:layout_below="@+id/header"
android:fillViewport="true" >
<TextView
android:id="@+id/output"
android:layout_width="fill_parent"
android:layout_height="132dp"
android:bufferType="spannable"
android:editable="false"
android:enabled="false"
android:focusable="true"
android:focusableInTouchMode="false"
android:freezesText="true"
android:inputType="textMultiLine"
android:isScrollContainer="true"
android:scrollbars="vertical"
android:text="@string/output" >
<requestFocus />
</TextView>
</ScrollView>
这就是函数的样子:
public void displayOutput()
{
File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"/Android/data/terminalemulatorlog.txt");
StringBuilder text = new StringBuilder();
try
{
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null)
{
text.append(line);
text.append('\n');
}
}
catch (IOException e)
{
Toast.makeText(getApplicationContext(),"Error reading file!",Toast.LENGTH_LONG).show();
}
TextView output=(TextView) findViewById(R.id.output);
output.setText(text);
((ScrollView) findViewById(R.id.scroller)).post(new Runnable()
{
public void run()
{
((ScrollView) findViewById(R.id.scroller)).fullScroll(View.FOCUS_DOWN);
}
});
}
现在我找到了here的部分解决方案。 因此,最后一行代码表示:
((ScrollView) findViewById(R.id.scroller)).post(new Runnable()
{
public void run()
{
((ScrollView) findViewById(R.id.scroller)).fullScroll(View.FOCUS_DOWN);
}
});
但这仅在第一次加载文本文件时起作用。如何始终将TextView向下滚动到最后?
答案 0 :(得分:6)
修改强> 使用此:
final ScrollView scroller = (ScrollView) findViewById(R.id.scroller);
scroller.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
scroller.fullScroll(View.FOCUS_DOWN);
}
}
});
答案 1 :(得分:2)
只需添加到您的TextView:
<div class="rightBorder"> JBoss </div>
并设置移动方式:
android:gravity="bottom"
android:scrollbars = "vertical"