我有以下情况:
ImageView,TabHost有两个标签。这两个选项卡都包含ListView。
我想要实现的目标是:
在选项卡中的ListView中向上/向下滚动时 - 滚动或折叠顶部的ImageView。
这意味着当我向下滚动时,ImageView将会消失,因为我将向下滚动。如果我要向上滚动,ImageView将再次出现。
我想在不使用ScrollView内部的ListView的情况下实现这一点(到目前为止还没有产生好的结果)。
我将如何实现这一目标?
答案 0 :(得分:0)
这是我在Scroll视图中使用Image视图和List视图的示例 您可以在XML中添加自己的两个选项卡,没有区别 希望这会有所帮助。
Layout.xml
<ScrollView
android:id="@+id/sv_itemRank"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:scrollbars="none" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ImageView
android:id="@+id/img_item_image"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"
android:contentDescription="@string/empty"
android:scaleType="centerCrop" />
<ListView
android:id="@+id/lv_items_lists"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/white"
android:divider="@null"
android:dividerHeight="0dp"
android:scrollbars="none" >
</ListView>
</LinearLayout>
</ScrollView>
在我的情况下填充listview后我使用自定义适配器调用此函数来设置基于子项的列表视图的高度
我在adapter.notifyDataSetChanged();
之后完成了这项工作
你将它改为你的代码。
setListViewHeightBasedOnChildren(listview)
的代码
将listview作为参数传递。
public static void setListViewHeightBasedOnChildren(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null)
return;
int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
MeasureSpec.UNSPECIFIED);
int totalHeight = 0;
View view = null;
for (int i = 0; i < listAdapter.getCount(); i++) {
view = listAdapter.getView(i, view, listView);
if (i == 0)
view.setLayoutParams(new ViewGroup.LayoutParams(desiredWidth,
LayoutParams.WRAP_CONTENT));
view.measure(desiredWidth, MeasureSpec.UNSPECIFIED);
totalHeight += view.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight
+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
listView.requestLayout();
}
答案 1 :(得分:0)