我创建了一个聊天室,用户可以在其中讨论多个主题。我正在RelativeLayout内部使用Scrollview,其中包含chatConversation Porblem是当用户打开应用程序时,他必须滚动到底部自己才能聊天或查看新的聊天讨论。
启动活动后,如何强制滚动视图从底部开始。
下面是我的布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:theme="@style/AppTheme.NoActionBar"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.v7.widget.Toolbar
android:id="@+id/main_chat"
app:titleTextAppearance="@style/Toolbar.TitleText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:background="#F0791F"
android:theme="@style/ThemeOverlay.AppCompat.Light"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:navigationIcon="@drawable/ic_people_outline_black_24dp"/>
<Button
android:id="@+id/btn_send"
android:layout_width="42dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:background="@android:color/transparent"
android:drawableLeft="@drawable/ic_send_black_24dp" />
<EditText
android:id="@+id/msg_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignTop="@+id/btn_send"
android:layout_alignParentBottom="true"
android:layout_toLeftOf="@+id/btn_send"
android:layout_toStartOf="@+id/btn_send"
android:background="@null"
android:hint="Write a message" />
<ScrollView
android:focusable="true"
android:focusableInTouchMode="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/scrollView"
android:transcriptMode="alwaysScroll"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/btn_send"
android:layout_below="@+id/main_chat"
android:layout_alignRight="@+id/btn_send"
android:layout_alignEnd="@+id/btn_send">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="2dp"
android:layout_weight="2"
android:autoLink="all" />
</ScrollView>
<View
android:layout_above="@+id/msg_input"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="@android:color/darker_gray"/>
</RelativeLayout>
我已经尝试使用
final ScrollView scrollLayout = ((ScrollView) findViewById(R.id.scrollView));
scrollLayout.post(new Runnable() {
@Override
public void run() {
scrollLayout.fullScroll(ScrollView.FOCUS_DOWN);
}
});
但是它也不起作用。
请帮助
答案 0 :(得分:0)
您如何显示消息?有While循环吗?
while循环的最后一行应该是...
mScrollView.fullScroll(ScrollView.FOCUS_DOWN);
mScrollView或您为ScrollView赋予的任何名称
答案 1 :(得分:0)
我认为您是将邮件附加在一个TextView
中(如果我输入错了,请纠正我)。
在您将fullScroll()
中的所有文本附加完后,检查您是否正在调用TextView
。
for (String oneMessage : messageList){
myTextView.append(oneMessage);
myTextView.append("\n");
....
....
}
//Scroll to bottom
scrollLayout.post(new Runnable() {
@Override
public void run() {
boolean success = scrollLayout.fullScroll(ScrollView.FOCUS_DOWN);
Log.d("Auto Scroll", success ? "Done" : "Failed");
}
});
让我知道这是否解决了您的问题!