我有一个RelativeLayout
,低于我有一个ListView
。我必须把这些放在一个ScrollView
. 任何帮助将不胜感激。
问问题
192 次
4 回答
2
您不应该将 ListView 放在 ScrollView 中,因为 ListView 类实现了自己的滚动,并且它只是不接收手势,因为它们都由父 ScrollView 处理
于 2012-11-23T09:31:54.383 回答
0
ScrollView
只能为单个设置Layout
。因此,将widgets
您要滚动的内容放在一个layout
中,如下所示:
<ScrollView
android:id="@+id/scrView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<RelativeLayout
android:id="@+id/rltvLyt"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<ListView
android:id="@+id/lstView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20sp" />
</RelativeLayout>
</ScrollView>
于 2012-11-23T09:32:46.240 回答
0
不要这样做。你到底想达到什么目的?在这里(以及其他任何地方)都提到过,这不是一个好主意,因为滚动机制会因为它们都想要滚动而变得混乱。然而,忽略你有一个巨大的列表视图,那么你错过了使用列表视图的主要性能提升,并且可能会膨胀使用表格布局并添加行。
于 2012-11-23T09:33:25.047 回答
0
您不应该将 ListView 放在 ScrollView 中,因为 ListView 类实现了自己的滚动,并且它只是不接收手势,因为它们都由父 ScrollView 处理。我强烈建议您以某种方式简化布局。例如,您可以将希望滚动到 ListView 的视图添加为页眉或页脚。
private void setListViewScrollable(final ListView list) {
list.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
listViewTouchAction = event.getAction();
if (listViewTouchAction == MotionEvent.ACTION_MOVE)
{
list.scrollBy(0, 1);
}
return false;
}
});
list.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view,
int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (listViewTouchAction == MotionEvent.ACTION_MOVE)
{
list.scrollBy(0, -1);
}
}
});
}
listViewTouchAction 是一个全局整数值。如果可以换行
list.scrollBy(0, 1);
于 2012-11-23T09:34:48.097 回答