我正在尝试创建一个带有标题的布局,在它下面有一个横幅,然后在横幅下面创建一些ListView。我希望整个屏幕可以滚动,除了标题。现在我知道ListView不会在ScrollView中滚动,所以我已经将ListView的高度设置得足够大以显示所有项目。问题是,即使经过这些更改,我发现ListView是独立滚动的,整个屏幕也不可滚动。
`
<include
android:id="@+id/logo_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
layout="@layout/screen_header" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:layout_weight="0.8"
android:background="#f2f2f2">
<include
android:id="@+id/mcUser"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
layout="@layout/complaint_reporters_details"
android:layout_weight="2" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal"
android:weightSum="9"
android:layout_weight="2">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1"
android:layout_weight="3"
android:focusableInTouchMode="false"
android:paddingLeft="30dp"
android:paddingRight="30dp">
<ImageView android:id="@+id/mcShowList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:scaleType="fitXY"
android:src="@drawable/list_icon"
android:layout_weight="0.2" />
<TextView android:id="@+id/mcShowList_label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textStyle="bold"
android:textSize="12sp"
android:textColor="#929292"
android:maxLines="1"
android:text="List"
android:layout_weight="0.8"
android:layout_marginTop="-8dp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1"
android:layout_weight="3"
android:gravity="center_vertical|center_horizontal"
android:paddingLeft="30dp"
android:paddingRight="30dp">
<ImageView android:id="@+id/mcShowMap"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:scaleType="fitXY"
android:src="@drawable/map_view"
android:layout_weight="0.2"/>
<TextView android:id="@+id/mcShowMap_label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textStyle="bold"
android:textSize="12sp"
android:textColor="#929292"
android:maxLines="1"
android:text="Map"
android:layout_weight="0.8"
android:layout_marginTop="-8dp" />
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:weightSum="1"
android:layout_weight="3"
android:focusableInTouchMode="false"
android:paddingRight="30dp"
android:paddingLeft="30dp">
<ImageView android:id="@+id/mcShowAnalytics"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:scaleType="fitXY"
android:src="@drawable/analytics_icon"
android:layout_weight="0.2" />
<TextView android:id="@+id/mcShowAnalytics_label"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:textStyle="bold"
android:textSize="12sp"
android:textColor="#929292"
android:maxLines="1"
android:text="Analytics"
android:layout_weight="0.8"
android:layout_marginTop="-10dp" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:layout_weight="0.2"
android:layout_width="fill_parent"
android:layout_height="400dp">
<FrameLayout
android:id="@+id/mcMapContainer"
android:layout_width="match_parent"
android:layout_height="fill_parent"/>
<LinearLayout
android:id="@+id/mcAnalyticsContainer"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="fill_parent">
<FrameLayout
android:id="@+id/mcChartContainer"
android:layout_gravity="center"
android:layout_width="200dp"
android:layout_height="200dp"/>
<GridView
android:id="@+id/mcAmenityList"
android:layout_height="0dp"
android:layout_weight="7"
android:layout_width="match_parent"
android:numColumns="3"/>
</LinearLayout>
<LinearLayout
android:id="@+id/mcListContainer"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="1">
<TextView
android:text="Open Complaints"
android:textColor="@color/red_btn_bg_color"
android:textSize="18dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:padding="5dp" />
<ListView
android:id="@+id/mcListOpen"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:text="Closed Complaints"
android:textColor="@color/red_btn_bg_color"
android:textSize="18dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:padding="5dp" />
<ListView
android:id="@+id/mcListClosed"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>
</RelativeLayout>
</LinearLayout>
</ScrollView>
`
答案 0 :(得分:7)
将滚动视图的高度从match_parent更改为wrap_content。因为滚动视图仅在其总高度大于父视图的高度时才启用滚动。即替换
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
使用此代码:
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fillViewport="true">
答案 1 :(得分:2)
我已在多个应用上多次使用以下方法。 我使用ListView的一个特殊子类:
package com.yourcompany.appname.views;
import android.content.Context;
import android.util.AttributeSet;
import android.view.ViewGroup;
import android.widget.ListView;
public class NonScrollableListView extends ListView {
public NonScrollableListView(Context context) {
super(context);
}
public NonScrollableListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollableListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int heightMeasureSpec_custom = MeasureSpec.makeMeasureSpec(
Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, heightMeasureSpec_custom);
ViewGroup.LayoutParams params = getLayoutParams();
params.height = getMeasuredHeight();
}
}
然后在你的布局中,而不是使用&#39; s,使用这样的东西:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<com.yourcompany.appname.views.NonScrollableListView
android:id="@+id/listId"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
希望这有帮助!
答案 2 :(得分:0)
你可以试试这个,
listView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
return true;
}
return false;
}
});
答案 3 :(得分:0)
将列表视图放到另一个xml中,并将其包含在下面
中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<include layout="@layout/show_message_header" />
<ScrollView
android:id="@+id/myscrollview_Show_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/header"
android:fadingEdge="none"
android:fillViewport="false"
android:paddingRight="0dp"
android:scrollbarAlwaysDrawVerticalTrack="false"
android:scrollbarSize="0dp"
android:scrollbarStyle="insideOverlay"
android:scrollbars="none" >
<TableLayout
android:id="@+id/Show_message_dynamic_table"
android:layout_width="match_parent"
android:layout_height="fill_parent" >
<include layout="@layout/desinglayoutforlistviewincludehere" />
</TableLayout>
</ScrollView>