ScrollView控件中的match_parent无效
添加android:fillViewport=“true”属性
轮播banner,数据源更新界面无法更新
其实也不是无法更新,内部有viewPager首页刷新无效,会在之后的pager里显示新的数据源中的东西。内部已经调用了adapter.notifyDataSetChanged()。这是viewPager的机制可以参考viewPager刷新问题详解、
ScrollView嵌套横向滑动控件时冲突
ViewPager高度自适应,获取高度为0
使用viewpager高度自适应时 MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)拿到的高度都是0,我使用的是databing,后来发现是pager.setObjectForPosition(binding.getRoot(),position);这样拿到整个界面的第一层布局,高度似乎无法撑开。后来使用 pager.setObjectForPosition(binding.recycler,position);对recycler的高度设置,它的外层是ScrollerView,可以将界面撑开,这样得到的高度才是fragment中全部控件的高度。viewPager高度自适应
WebView内嵌在Scrollerview中,一起上下滚动
webview内嵌在Scrollerview中,上下滚动,只能滚动webview,要webview与scrollerview一起滚动,可以在ScrollerView中加 android:descendantFocusability="blocksDescendants"抢占焦点即可实现。
使用@Nullable PersistableBundle persistentState界面空白
在activity中使用
public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) {
super.onCreate(savedInstanceState, persistentState);
这是5.0以上新出的方法,给予界面持久化的能力,但需要在AndroidManifest.xml的activity标签下添加android:persistableMode="persistAcrossReboots"属性,不然界面会无法加载处理,显示一片空白。
ViewPager+Fragment更新fragment无效
根据业务需要每次刷新都是重新创建fragment,但除了第一次,每次获取的fragment中的值是空。后来发现是因为使用了FragmentPagerAdapter,FragmentPagerAdapter中的instantiateItem方法会去判断是否有fragment的缓存,如果有就使用那个,所以每次都拿到的是另一个对象。