`

android自定义ViewGroup总结

 
阅读更多
在稍微复杂一些的布局中就要自己定义一个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就可以使用!
分享到:
评论

相关推荐

    Android 手把手教您自定义ViewGroup(一)

    在Android开发中,自定义ViewGroup是提升应用界面复杂度和交互体验的重要手段。本教程将引导您逐步了解如何从零开始创建一个自定义的ViewGroup。我们将通过分析标题"Android 手把手教您自定义ViewGroup(一)"以及...

    Android自定义ViewGroup-----流式布局

    在Android开发中,自定义ViewGroup是实现复杂布局或创新交互设计的重要手段。本文将深入探讨如何创建一个自定义的“流式布局”(MyFlowLayout),这个布局会根据屏幕尺寸自动调整子视图的位置,使其从左到右、从上到...

    Android自定义ViewGroup实现Title自动隐藏功能.rar

    今天看到很多app都有Title自动隐藏功能,1.这是一个Gradle工程,Gradle的版本是2.10,项目的Compile sdk Version是 23 , Build ...Android自定义ViewGroup实现Title自动隐藏功能源代码分享,Android开发者必看示例。

    android自定义viewgroup实现等分格子布局

    "android自定义viewgroup实现等分格子布局"这个话题涉及到如何利用自定义ViewGroup类来创建一个能够平均分配屏幕空间的网格布局。下面我们将深入探讨这个过程,以及相关的关键知识点。 首先,了解ViewGroup。在...

    Android中使用自定义ViewGroup的总结

    本文将对如何在Android中创建和使用自定义ViewGroup进行总结,并提供一个具体的实例来演示如何为Child View设置属性。 首先,我们要了解自定义ViewGroup的两大类别: 1. 创建全新的ViewGroup类型:这通常涉及构建...

    自定义ViewGroup 显示一个TextView到ViewGroup

    总结起来,通过自定义ViewGroup,我们可以控制子View的测量、布局以及行为,实现独特的布局效果。在本例中,我们展示了如何创建一个简单的自定义ViewGroup,只包含一个TextView并将其居中显示。实际开发中,可以根据...

    android自定义viewgroup实现slidingMenu

    在Android开发中,自定义ViewGroup是实现复杂布局和交互效果的重要手段。SlidingMenu是一种常见的界面组件,常用于实现侧滑菜单效果,类似于许多应用(如Google Play、Facebook等)中的导航栏。本资源提供的就是一个...

    自定义VIewGroup实现仿淘宝商品详情页

    在Android开发中,自定义ViewGroup是实现复杂布局和交互效果的重要手段。本教程将深入讲解如何通过自定义ViewGroup来实现类似淘宝商品详情页的滚动效果,即当页面滑动到底部时出现粘滞效果,继续上拉则切换至下一页...

    自定义ViewGroup实现瀑布流

    在Android开发中,自定义ViewGroup来实现瀑布流是一项技术挑战,但也是实现个性化布局的关键。 首先,我们需要理解Android中的ViewGroup。ViewGroup是所有布局容器的基类,如LinearLayout、RelativeLayout等。...

    Android自定义ViewGroup打造各种风格的SlidingMenu

    在Android开发中,自定义ViewGroup是创建独特用户界面的关键技术之一。本篇文章将深入探讨如何利用自定义ViewGroup来构建各种风格的SlidingMenu,一种常见的应用组件,用于实现类似抽屉效果的导航菜单。SlidingMenu...

    Android自定义ViewGroup的实现方法

    总结来说,自定义ViewGroup涉及的主要步骤包括:定义自定义属性,获取属性值,重写`onMeasure()`和`onLayout()`,以及处理XML布局中的属性设置。通过这种方式,开发者可以构建出满足特定需求的复杂布局,提升应用的...

    Android自定义ViewGroup(一)

    这篇博客文章“Android自定义ViewGroup(一)”详细介绍了如何从零开始创建一个自定义的ViewGroup,以及在这个过程中可能遇到的问题和解决策略。下面将深入探讨这个主题。 首先,我们来了解ViewGroup的基本概念。...

    Android 自定义ViewGroup 实战篇 -> 实现FlowLayout源码程序

    在Android开发中,自定义ViewGroup是实现复杂布局和交互的关键技术之一。本实战篇将聚焦于如何实现一个名为FlowLayout的自定义布局,它允许子视图按行排列,类似于HTML中的`&lt;div&gt;`标签。在Android应用设计中,...

    android 自动换行的自定义viewgroup

    总结来说,创建一个能自动换行的自定义ViewGroup涉及到了Android布局管理、测量和布局过程,以及滚动行为的实现。这个过程中需要考虑屏幕适配、性能优化和自定义逻辑,是一项既富有挑战性又充满乐趣的任务。在实际...

    Android自定义ViewGroup完美实现 ArcMenu

    在Android开发中,自定义ViewGroup是实现独特用户界面效果的重要手段。ArcMenu是一个非常吸引人的设计,它呈现了一个扇形的菜单布局,通常用于显示一些可点击的图标或者选项,这种设计通常会给人一种优雅而直观的...

    自定义ViewGroup组合控件

    在Android开发中,自定义ViewGroup是创建复杂布局和交互式控件的重要手段。自定义ViewGroup意味着扩展Android的 ViewGroup 类或其子类,如 LinearLayout、RelativeLayout 或 FrameLayout,以实现特定的功能或视觉...

    Android自定义ViewGroup(二)

    这篇博客“Android自定义ViewGroup(二)”深入探讨了如何构建一个自定义的布局管理器,特别是针对瀑布流(Waterfall Flow)和照片墙(Photo Wall)这类需求。这两种布局在移动应用中非常常见,例如电商应用的商品...

    Android 自定义ViewGroup实现整个Item布局竖直跑马灯效果

    在Android开发中,自定义ViewGroup是实现复杂布局和动画效果的重要手段。本文将深入探讨如何利用自定义ViewGroup来实现一个独特的“竖直跑马灯”效果,这种效果常见于各种信息展示或广告轮播场景,使得内容能沿着...

    android自定义viewGroup仿Scrollview详解

    在Android开发中,自定义ViewGroup是提升应用用户体验和实现独特设计的重要手段。本文将深入讲解如何通过自定义ViewGroup来模拟ScrollView的功能,让你更好地理解Android视图层次结构的构建和滚动机制。 首先,了解...

Global site tag (gtag.js) - Google Analytics