我正在开发一个项目,我的ScrollView包含一个linearlayout。
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#9e9e9e"
android:layout_weight="2"
android:id="@+id/scrollview_llChatContainer"
android:layout_above="@+id/relativeLayout">
<LinearLayout
android:id="@+id/llChatContainer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:animateLayoutChanges="true"
android:orientation="vertical"
android:background="#cccccc">
</LinearLayout>
</ScrollView>
我在我的代码中夸大了这个linearlayout。最后的结果看起来更像是listView。以下是我如何给LinearLayout充气。
public void populateMessages(List<Message> messagesList){
inflater.inflate(R.layout.inc_message_layout, llChatContainer, false);
imageLoader.displayImage(message.imageuser, (ImageView)messageLayout.findViewById(R.id.imageView));
}
if(!message.image.equalsIgnoreCase("")){
imageLoader.displayImage(message.image, (ImageView)messageLayout.findViewById(R.id.rivMsgImageN));
}
TextView tv = (TextView)messageLayout.findViewById(R.id.tvMsgTextN);
tv.setText(message.text);
llChatContainer.addView(messageLayout);
}
}
现在填充列表时,我希望scrollView滚动到LinearLayout的底部。我尝试了两种我找到的方法。
scroller.post(new Runnable() {
public void run() {
scroller.fullScroll(ScrollView.FOCUS_DOWN);
}
});
scroller.post(new Runnable() {
public void run() {
scroller.scrollTo(0,scroller.getBottom());
}
});
上述解决方案均不适合我。 Linearlayout按预期填充,但scrollview甚至没有滚动。
还有其他方法可以完成这项工作吗? 感谢。
答案 0 :(得分:0)
这是由时间问题引起的,尝试滚动一点延迟,使用此代码
scroller.postDelayed(new Runnable() {
public void run() {
scroller.fullScroll(ScrollView.FOCUS_DOWN);
}
}, 10L);
答案 1 :(得分:0)
在调用scroller.scrollTo(0,linearlayout.getBottom());
后使用scroller.scrollTo(0,linearlayout.getHeight());
或populateMessages()
。 ScrollView
的孩子正在改变它的价值,而不是ScrollView
本身。