簡體   English   中英

Android TextView應自動垂直滾動

[英]Android TextView should scroll vertically automatically

我需要一個自動垂直滾動的TextView。 這是我的布局代碼:

activity_info.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/iView"
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:layout_centerHorizontal="true"
        android:contentDescription="@string/info"
        android:src="@mipmap/infoImage" />

    <TextView
        android:id="@+id/tView"
        android:layout_below="@+id/iView"
        android:layout_width="match_parent"
        android:layout_height="300dp"
        android:layout_centerHorizontal="true"
        android:maxLines="500"
        android:scrollbars="vertical" />

    <RelativeLayout
        android:layout_below="@+id/tView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:gravity="center">

        <Button
            android:id="@+id/buttonYes"
            android:layout_width="100dp"
            android:layout_height="50dp"
            android:text="YES" />

        <Button
            android:id="@+id/buttonNo"
            android:layout_toEndOf="@id/buttonYes"
            android:layout_width="100dp"
            android:layout_height="50dp"            
            android:text="NO" />

    </RelativeLayout>

</RelativeLayout>

我讀到我必須輸入這一行:

tView.setMovementMethod(new ScrollingMovementMethod())

進入我的活動中的onCreate方法:

InfoActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_info);

    TextView tView = (TextView) findViewById(R.id.tView);
    tView.setMovementMethod(new ScrollingMovementMethod());
}

如果我這樣做,如果在視圖中插入了一些新輸入(文本),TextView就不會自動滾動。 我知道還有其他一些問題。 但我嘗試了大部分。

我怎么解決這個問題?

嘗試將textView設置為android:gravity="bottom"並使用textView.append("\\n"+"New Input Text."); 用於新的輸入文本;

你快到了。 只需添加一些東西來實現這一目標,

首先在TextView中添加這些屬性

android:maxLines = "AN_INTEGER"
android:scrollbars = "vertical"
android:gravity="bottom"

其次像往常一樣使用,

tView.setMovementMethod(new ScrollingMovementMethod());

這應該可以解決您的問題。

我建議將TextView包裝在ScrollView

<ScrollView
    android:id="@+id/sView"
    android:layout_below="@+id/iView"
    android:layout_width="match_parent"
    android:layout_height="300dp"
    android:layout_centerHorizontal="true" >

  <TextView
      android:id="@+id/tView"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:maxLines="500"
      android:scrollbars="vertical"
      android:gravity="bottom" />

</ScrollView>

您可以通過執行添加新文本

public void appendAndScrollDown(String someText) {
    tView.append("\n" + someText);
    sView.fullScroll(View.FOCUS_DOWN);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM