我想實現一個聊天窗口。也就是說,用戶在窗口底部寫入,新文本向上滾動現有文本。爲此,我創建了一個ScrollView和LinearLayout裏面。新的EditText意見被添加到的LinearLayout從底部開始,根據重力佈局:聊天窗口ScrollView向下擴展而不是向上
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="bottom"
android:layout_gravity="bottom"
android:fillViewport="true"
tools:context=".Chat">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom"
android:layout_gravity="bottom"
android:layout_alignParentBottom="true"/>
</ScrollView>
這工作得很好,但是當我想看到的「隱藏文本」即達屏幕,然後向上滾動,我已經在滾動結尾,隱藏的文本消失了。相反,ScrollView允許我向下滾動並將新的空白添加到視圖的底部。
只是爲了測試方向相反,我改變了線路:
android:gravity="bottom"
android:layout_gravity="bottom"
到
android:gravity="top"
android:layout_gravity="top"
同時爲滾動型和的LinearLayout,並添加新的EditText意見索引0,而不是默認的結尾:
linearLayout.addView(editText, 0);
而聊天窗口在相反的方向上完美地工作。它可以滾動到輸入的第一行。沒有什麼會丟失。
所以我的問題是什麼必須添加到第一種方法來使滾動保持LinearLayout的內容,並不丟失任何文本?