安卓ScrollView嵌套RecyclerView,GridView,ViewPager沖突解決

如題,就把項目中常見的這幾個沖突總結下吧,記性不太好,還是寫下來好了。

ScrollView嵌套RecyclerView

滑動不流暢沖突:在RecyclerView屬性中加入
android:nestedScrollingEnabled="false"
使recyclerview的滑動跟隨scrollveiw

scrollview中組件不能充滿:
Android:fillViewport="true"
允許Scrollview中的組件填充它

RecyclerView顯示在布局頂部:
mRecyclerTest.setFocusable(false);//失去焦點

ScrollView嵌套GridView、ListView

只顯示一行:自定義一個gridview重新繪制item高度

public class MyGridView extends GridView {
    public MyGridView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

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

    public MyGridView(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);
    }
}

GridView頂部顯示問題:
在GridView的父View中加入屬性

android:focusable="true"
android:focusableInTouchMode="true"

ScrollView嵌套ViewPager

viewpager不顯示:重新定義一個ViewPager

public class ScrollViewPager extends ViewPager{

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

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

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

        int height = 0;
        for (int i = 0; i < getChildCount(); i++) {
            View child = getChildAt(i);
            child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
            int h = child.getMeasuredHeight();
            if (h > height)height = h;
        }

        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

}

CollapsingToolbarLayout和GridView一起使用,滑動gridview無折疊效果

 ViewCompat.setNestedScrollingEnabled(mGridView,true);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容