scrollview中嵌套viewpager出现的兼容问题

今天在项目的主页面遇到了scrollview中嵌套viewpager出现的兼容问题,问题起因:因为主页面内容过多,所以采用scrollview滚动,并且在主页面还有个viewpager中嵌套girdview,那么问题来了,第一:ViewPager不能显示,第二:ViewPager不能滑动


解决问题一:

一开始我的ViewPager是自适应高度的

        <android.support.v4.view.ViewPager
          android:id="@+id/view_pager"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp" >
        </android.support.v4.view.ViewPager>

最简单的方法把高度写死,但是我的数据又是从后台获取过来的,所以肯定不能写死,那么我就想到了一个折中的办法。在代码中直接算出height的值。。。(怎么算根据自己的项目定)

RelativeLayout.LayoutParams layoutParams = (RelativeLayout.LayoutParams) mViewPager
.getLayoutParams();

int widthSigle = (mScreenWidth - 16) / 5;
int num = mList.size() % 5 == 0 ? mList.size() / 5: mList.size() / 5 + 1;
layoutParams.height = (num - 1) * 4 + widthSigle * num;

mViewPager.setLayoutParams(layoutParams);

这个问题有其他多种解法,但是我这个是最简单的也是最笨的~

 

解决问题二:

开开心心解决了第一个,运行起来又发现ViewPager不能滑动了。。问题归结于girdview和ViewPager的滑动会出现冲突,所以得重写girdview,实其不获得焦点

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


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


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

到这里就可以大功告成,祝大家顺利

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值