<ScrollView
android:id="@+id/layout_guide_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="gone">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="55dp"
>
<Button
android:id="@+id/btn_guideTab_backButton"
android:layout_width="50dp"
android:layout_height="50dp"
android:background="@drawable/backicon_round"/>
<TextView
android:id="@+id/text_guideTab_detail_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:textColor="@color/color_green"
android:text="Error"
android:textSize="19dp" />
</RelativeLayout>
<ListView
android:id="@+id/list_guideTab_detail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"></ListView>
</LinearLayout>
</ScrollView>
ScrollView有一个标题按钮和文本,其余用于列表视图
我想要做的是滚动整个屏幕(包括listview上方的relativeLayout) 但问题是,当我尝试滚动屏幕时,我只能滚动列表视图......
答案 0 :(得分:0)
您有ScrollView和LinearLayout的匹配父级。 LinearLayout的高度实际上只有55dp加上ListView的高度。因此,在ScrollView中无需滚动。您可以滚动列表,因为它本身可以根据需要滚动。
你明白我的意思吗?尝试将ListView上的宽度设置为薄,然后使ScrollView的高度非常高,然后尝试它。这样,您可以触摸ScrollView的两侧以滚动ScrollView。
答案 1 :(得分:0)
不建议将ListView嵌套到ScrollView中。您可以添加头视图作为ListView的标题,当然,您可以简单地使用RecycleView。
答案 2 :(得分:0)
您仍然可以使用以下方法来使用您的滚动视图。
public static void setDynamicHeight(ListView mListView) {
ListAdapter mListAdapter = mListView.getAdapter();
if (mListAdapter == null) {
// when adapter is null
return;
}
int height = 0;
int desiredWidth = View.MeasureSpec.makeMeasureSpec(mListView.getWidth(), View.MeasureSpec.UNSPECIFIED);
for (int i = 0; i < mListAdapter.getCount(); i++) {
View listItem = mListAdapter.getView(i, null, mListView);
//no idea why this conditions are [no reference, just got from debug]
if (desiredWidth == 0) {
listItem.measure(desiredWidth, View.MeasureSpec.UNSPECIFIED);
} else {
listItem.measure(View.MeasureSpec.makeMeasureSpec(desiredWidth, View.MeasureSpec.AT_MOST), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
}
height += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = mListView.getLayoutParams();
params.height = height + (mListView.getDividerHeight() * (mListAdapter.getCount() - 1));
mListView.setLayoutParams(params);
mListView.requestLayout();
}
最后,您只需在将数据添加到适配器后调用此函数。