在稍微复杂一些的布局中就要自己定义一个ViewGroup,里面可以放很多不同的View。android的launcher桌面就是一个很典型的例子。有兴趣的同学可以详细研究一个workspace.java类。
1、在新建一个PreviewLayout并继承自ViewGroup时会自己调价重新方法onLayout()这个方法是在你每次想ViewGroup添加View时调用,你可以在这儿设置每个view在Viewgroup中的位置。
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
if (changed) {
int childLeft = 0;
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
final View childView = getChildAt(i);
if (childView.getVisibility() != View.GONE) {
final int childWidth = childView.getMeasuredWidth();
childView.layout(childLeft, 0, childLeft + childWidth,
childView.getMeasuredHeight());
childLeft += childWidth;
}
}
}
}
注意:如果你要动态添加View到ViewGroup,要把if(changed)这个判断条件去掉,不去会引起让人蛋疼的VIew不显示问题。
2、光重写onLayout方法是不行的,还要重新onMeasure方法,并给每个View设置大小。
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
final int count = getChildCount();
for (int i = 0; i < count; i++) {
getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec);
}
}
这个很重要,不然你想Viewgroup中添加的View是不会显示的。具体原因还没搞懂,这儿有片文章可以参考一下:http://hi.baidu.com/huareal/blog/item/0aa0e2d587220b2b9b502708.html或者http://hi.baidu.com/qinghua3344521/blog/item/17fead162adb275921a4e977.html
有高手指点一下。
附件里面是一个自定义的ViewGroup,可以左右拖动,类似于launcher桌面,向里面添加View就可以使用!
分享到:
相关推荐
今天看到很多app都有Title自动隐藏功能,1.这是一个Gradle工程,Gradle的版本是2.10,项目的Compile sdk Version是 23 , Build ...Android自定义ViewGroup实现Title自动隐藏功能源代码分享,Android开发者必看示例。
android自定义viewgroup实现等分格子布局
原文地址http://blog.csdn.net/android_cmos/article/details/52356229
android自定义viewGroup仿Scrollview详解
Android 自定义ViewGroup实现整个Item布局竖直跑马灯效果,详细看我的博客讲解
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/38339817, 有问题请博客留言
自定义ViewGroup实现瀑布流,图片加载,图片回收,跟改列数,滑动加载。
Android自定义ViewGroup 滑动
该资源包含了一个利用自定义的viewgroup实现的slidingmenu,简单易懂。
自定义ViewGroup(高度不同的列表) MIT License Copyright (c) 2017 JiaoZhengXiang Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated ...
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/38352503 有问题请博客留言
最近有些空闲时间,我有回顾了一下自定义控件的一些东西,我自定义了一个ViewPager,性能不太好,所以上传到这和大家交流学习
仿照X宝的商品详情页, 拉到页面底部时有一个粘滞效果,如果用户继续向上拉的话就进入下一页
前面在学习鸿洋大神的一些自定义的View文章,看到了自定义ViewGroup实现浮动标签,初步看了下他的思路以及结合自己的思路完成了自己的浮动标签的自定义ViewGroup。目前实现的可以动态添加标签、可点击。效果图如下:...
自定义ViewGroup,根据手势滑动界面
代码为博客实例代码:http://blog.csdn.net/lmj623565791/article/details/37567907 有问题博客中留言
主要介绍了Android自定义ViewGroup实现FlowLayout标签流容器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要为大家详细介绍了Android自定义viewgroup,使用adapter适配数据,具有一定的参考价值,感兴趣的小伙伴们可以参考一下