[置顶] Android ListView高度自适应和ScrollView冲突解决

    参考这位前辈:http://blog.sina.com.cn/s/blog_9fb0b14f0102v39y.html。还有这位前辈对自定义measure方法详细解释,非常详细:http://blog.csdn.net/hanhailong726188/article/details/46136569

在listview中需要在listview外层嵌套一个scroll,以便能控制滑动的空间,让每一次点击listview的item下方弹出的菜单,当最下面一行不会使菜单出现在不该出现的位置。当添加scroll在listview,发现listview的高度只有一个了,怎么设置高度固定的和match_parent都是没用的,需要重写lsitview才能解决,重写的listview的代码如下:

public class MyListView extends ListView {

public MyListView(Context context) {
super(context);
}

public MyListView(Context context, AttributeSet attrs) {
super(context, attrs);
}

public MyListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}

@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}

}

listview的文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/background"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:text="報價"
        android:textColor="@color/white"
        android:textSize="16sp" />

    <ScrollView
        android:id="@+id/price_scroll"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@color/background" >

        <allone.verbank.apad.client.component.fixedListView.PriceListViewScroll
            android:id="@+id/price_quote_list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:divider="@color/white" >
       </allone.verbank.apad.client.component.fixedListView.PriceListViewScroll>
    </ScrollView>

</LinearLayout>


你可能感兴趣的:(android,android,ListView)