Android的滚动视图自动滚动作为文本被添加

我有一个在Android应用程序中包含textview的滚动视图。 该文本视图将以设定的时间间隔连续添加文本。 滚动工作和文本添加得很好,但我想要做的是滚动视图自动向下滚动,因为文本添加。 随着新文本被添加到底部,它会自动向下滚动以匹配,并且旧文本在顶部被推出。 更好的办法是将文本添加到滚动视图的底部,并使其向上推动较旧的文本,但一次只能一个。

Solutions Collecting From Web of "Android的滚动视图自动滚动作为文本被添加"

<ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:fillViewport="true" > <TextView android:id="@+id/statusText" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="bottom" /> </ScrollView> 

我已经尝试了与重力的解决scheme,但实际文本下滚动到底部时,结果是有很多空的空间。

所以这是另一种方式。 您可以将您的TextView放置在ScrollView中:

 <ScrollView android:id="@+id/scrollView1" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" android:fillViewport="true" > <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="wrap_content" /> </ScrollView> 

并定义addTextChangedListener

 public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { //some code here ScrollView scrollView1 = (ScrollView) findViewById(R.id.scrollView1); TextView textView1 = (TextView) findViewById(R.id.textView1); textView1.addTextChangedListener(new TextWatcher() { @Override public void afterTextChanged(Editable arg0) { scrollView1.fullScroll(ScrollView.FOCUS_DOWN); // you can add a toast or whatever you want here } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { //override stub } @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { //override stub } }) } 

其实我现在注意到应用程序将每次更改文本,而不仅仅是添加。 然而,它对我来说工作得很好。

添加文本时,只需将整个ScrollView到底部即可。

 textView.append(text); scroll.fullScroll(View.FOCUS_DOWN) 
 textView.append(text); scroll.fullScroll(View.FOCUS_DOWN) 

这会产生问题,由于android:layout_gravity="bottom" ,它不会滚动到顶端,