解决ScrollView与ListView嵌套冲突

当ScrollView 嵌套 ListView时,会引起冲突,为解决这个冲突以下:html

新建一个自定义View,集成ListView,重写OnMeasure方法,从新计算ListView的高度,不过这样的话会致使ListView没法滑动,还好有ScrollView,能够弥补这一缺点;java

我建立一个HempListView的自定义类android

代码以下:ide

/**
 * 做者:jaume
 * <p/>
 * 建立于:2016/9/8
 * <p/>
 * 描述:解决ScrollView与ListView之间的冲突
 */
public class HempListView extends ListView {

    private Paint paint;

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

    //重写该方法后,致使listView没法滑动
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        int expandSpec = MeasureSpec.makeMeasureSpec(
                Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }
}

XML代码:布局

中间是我在后来加的注释,你能够删掉,直接使用优化

<ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <!-- ScrollView中只能放一个控件,我选择放一个布局控件,这样能够在布局中添加本身想添加的控件 --!>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <!-- 我定义的一个ViewPager,总布局是上面ViewPager,下面ListView显示 --!>

            <android.support.v4.view.ViewPager
                android:id="@+id/mViewPager"
                android:layout_width="fill_parent"
                android:layout_height="150dp" />

            <!-- 这个就是自定义的ListView,将他调出来使用 --!>

            <com.test.bwie.jamlive.view.HempListView
                android:id="@+id/mListView_Remeng"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:fadingEdgeLength="0dp"
                android:padding="10dp"
                android:scrollbars="none"></com.test.bwie.jamlive.view.HempListView>
        </LinearLayout>
    </ScrollView>

在Java代码中调用:code

//获取控件
    private HempListView mHempListView;

    //初始化控件
    mHempListView = (HempListView) view.findViewById(R.id.mHempListView);

    //配置优化
    mHempListView.setAdapter(new MyBaseAdapter());

    //new MyBaseAdapter() 这个是优化的类

代码不是很全,能够相应的复制拿来用,这样就能够解决ScrollView与ListView的嵌套问题了。htm

 

忽然想到,能够用如下方法来模仿上拉加载,下拉刷新,能够参考看下,有什么不足但愿告知get

// 建立一个header 头部,想要建立一个什么类型的就建立一个
TextView header = new TextView(getActivity());
header.setText("刷新");
header.setTextColor(Color.WHITE);
header.setBackgroundColor(Color.RED);
header.setGravity(Gravity.CENTER);
header.setPadding(15, 15, 15, 15);

// 建立一个header
TextView footer= new TextView(getActivity());
footer.setText("加载更多");
footer.setTextColor(Color.WHITE);
footer.setBackgroundColor(Color.RED);
footer.setGravity(Gravity.CENTER);
footer.setPadding(15, 15, 15, 15);


//以后添加到listView中
listView.addHeaderView(header);
//添加结尾的
listView.addFooterView(footer);

/*************最后才能配置Adapter,不然出错****/
listView.setAdapter(new MyPagerAdapteer);

//运行,就会显示效果
相关文章
相关标签/搜索