在Android开发中ListView和GridView、RecyclerView的使用是不可避免的,但是这些控件又只能以列表的形式来展示,这样就有很大的局限性,好在Android提供了ScrllView来进行多空间组合,实现滑动的效果,说以ScrllView嵌套这些布局已经不可避免。
同样是滑动界面,这样就会出现冲突,今天就来说说ScrllView嵌套这些布局最经常需要解决的问题;
1、ScrllView嵌套ListView会出现只显示一行Iten的问题,这样就很焦灼了啊,显示不完全其他地方是空白。(我觉得产品经理看到会打死我,所以还是要账号解决办法啊)
解决办法其实很简单:自定义ListView重新计算每一个Item的高度;
自定义ListView重新onMeasure方法:
@Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }
这样就解决了Lis他View显示不完全的问题。
2、ScrllView嵌套还会出现的问题是,自定义ListView之后,可以完全显示,但是如果我们在ListView上面添加一个Viewpager的
话(当然ViewPager只是举个例子,你可能会添加其他的控件),我们在页面加载好之后会发现出现在ListView的位置,而ViewPager测会
被滑出屏幕,这样就很僵硬啊!
解决办法:在ScrllView的父类布局的XML中添加:
android:focusable="true" android:focusableInTouchMode="true"
或者在代码中添加是设置listView:
listView.setFocusable(false);
之所以出现这种情况是因为页面加载进来之后焦点会聚焦在ListView上面,我们只需要取消ListView的焦点,或者
把焦点聚焦在S从rollView上面即可。