实现一个简单的item多布局,当做记录,主要是通过不同的itemType来实现,先放上我的实现效果,运行使用的是 API19的模拟器,如下,图片大都是百度的:
由于使用了百分比布局,所以横屏的也顺便适配了,横屏的如下,
需要注意一下这些地方:
1、由于我的最外层布局使用的是 viewpager + fragment,在轮播图下面几个圆形按钮的布局(第二个itemType)也是fragment,所以在第二个itemType 里面需要使用 getChildFragmentManager()
而不是 getFragmentManager(),否则会造成 最下面导航栏切换 fragment 时,切换页面之后 第二个itemType 的圆形图标加载不出来(try try),这是因为变成了是fragment管理子fragment,所以需要这样设置;
2、轮播图使用的是 github 的一个开源:
https://github.com/youth5201314/banner
也可以自己写,里面给的圆形指示器设置了大小和高度,所以我们需要通过反射来修改(如果是自定义指示器的话),或者通过一组圆形指示器图片来直接使用也可以,反射如下:
int testDp = ***;
Field field = banner.getClass().getDeclaredField("mIndicatorMargin");
field.setAccessible(true);
field.set(banner,testDp);
3、第二个itemType 的圆形指示器就通过xml来画,通过一个 linearLayout 动态添加即可:
for(int i=0;i<3;i++)
{
// 设置圆圈点
View view = new View(getContext());
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(10,10);
params.leftMargin = 20;
view.setBackgroundResource(R.drawable.point_background);
view.setLayoutParams(params);
view.setEnabled(false);
linearLayout.addView(view);
}
4、还有一个是最后的