scrollview由于某种原因不起作用。我在scrollview中有一个线性布局,在LinearLayout中有一个listview。 我做错了什么?
下面是我的布局文件。
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:background="@color/colorWhite"
android:layout_height="wrap_content">
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_movie_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:background="@color/colorWhite"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.netbigs.apps.moviesat.MovieDetail"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imView"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvmvname"
android:paddingTop="10dp"
android:textColor="@color/colorBg"
android:textSize="16sp"
android:textStyle="normal|bold"
android:hint="Movie Name"
android:layout_gravity="center"
android:textAlignment="center"
android:layout_centerVertical="true"
android:layout_above="@+id/tvmvdate"
android:layout_centerHorizontal="true"
android:layout_marginBottom="18dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:layout_gravity="center"
android:id="@+id/tvmvdate"
android:textColor="@color/colorBg"
android:hint="Release Date"
android:layout_marginBottom="14dp"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvmvinfo"
android:layout_gravity="center"
android:textColor="@color/colorBg"
android:textAlignment="center"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
<com.freeapps.apps.mosoet.NonScrollListView
android:id="@+id/theatrelist"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="5dp">
</com.freeapps.apps.mosoet.NonScrollListView>
</LinearLayout>
</ScrollView>
NonScrollListView用于防止滚动列表视图的类
public class NonScrollListView extends ListView {
public NonScrollListView(Context context) {
super(context);
}
public NonScrollListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public NonScrollListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public 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();
}
}
答案 0 :(得分:1)
您可以使用listview标题。
为标题部分创建一个xml文件(包含要在listview上方显示的元素), let,xml文件的名称是header.xml
<LinearLayout
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_movie_detail"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:background="@color/colorWhite"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.netbigs.apps.moviesat.MovieDetail"
android:orientation="vertical">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imView"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:layout_alignParentTop="true"
android:layout_centerVertical="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvmvname"
android:paddingTop="10dp"
android:textColor="@color/colorBg"
android:textSize="16sp"
android:textStyle="normal|bold"
android:hint="Movie Name"
android:layout_gravity="center"
android:textAlignment="center"
android:layout_centerVertical="true"
android:layout_above="@+id/tvmvdate"
android:layout_centerHorizontal="true"
android:layout_marginBottom="18dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:layout_gravity="center"
android:id="@+id/tvmvdate"
android:textColor="@color/colorBg"
android:hint="Release Date"
android:layout_marginBottom="14dp"
android:layout_centerHorizontal="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/tvmvinfo"
android:layout_gravity="center"
android:textColor="@color/colorBg"
android:textAlignment="center"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true" />
</LinearLayout>
仅保留当前布局中的列表视图。
将header.xml设置为listview标题,
LayoutInflater myinflater = getLayoutInflater();
ViewGroup myHeader = (ViewGroup)myinflater.inflate(R.layout.headerlayout, myListView, false);
// you need to initialize your header xml elements using myHeader
// tvmvname = (TextView)myHeader.findViewById(R.id.tvmvname);
//and so on...
// you can set text and image here or later after initializing those
myListView.addHeaderView(myHeader, null, false);
***使用listview标题而不是scrollview中的listview
,性能要好得多