`
venus585625
  • 浏览: 248746 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android中ViewGroup等容器控件的使用

阅读更多
在Android中,可以自定义类,继承ViewGroup等容器类,以实现自己需要的布局显示。



如果你在ViewGroup中增加了控件,却无法显示出来,那么下面这个例子,就可以用来参考了。



(主要是要实现onLayout()方法,在这个方法中,对每个子控件进行measure(),然后再布局。)



view plaincopy to clipboardprint?
package com.arui;  
import android.content.Context;  
import android.util.Log;  
import android.view.View;  
import android.view.ViewGroup;  
import android.widget.Button;  
/** 
* Example for using ViewGroup. 
*  
* @author http://blog.csdn.net/arui319 
* @version 2010/09/07 

*/ 
public class MyViewGroup extends ViewGroup {  
    public MyViewGroup(Context context) {  
        super(context);  
        this.initOtherComponent(context);  
    }  
    private void initOtherComponent(Context context) {  
        Button aBtn = new Button(context);  
        // set id 1  
        aBtn.setId(1);  
        aBtn.setText("a btn");  
        this.addView(aBtn);  
        Button bBtn = new Button(context);  
        // set id 2  
        bBtn.setId(2);  
        bBtn.setText("b btn");  
        this.addView(bBtn);  
    }  
    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) {  
        int childCount = getChildCount();  
        for (int i = 0; i < childCount; i++) {  
            View child = getChildAt(i);  
            switch (child.getId()) {  
            case 1:  
                // 1 is aBtn  
                Log.d("MyViewGroup", "btn1 setting");  
                child.setVisibility(View.VISIBLE);  
                child.measure(r - l, b - t);  
                child.layout(0, 0, child.getMeasuredWidth(), child  
                        .getMeasuredHeight());  
                break;  
            case 2:  
                // 2 is bBtn  
                Log.d("MyViewGroup", "btn2 setting");  
                child.setVisibility(View.VISIBLE);  
                child.measure(r - l, b - t);  
                child.layout(0, 50, child.getMeasuredWidth(), child  
                        .getMeasuredHeight() + 50);  
                break;  
            default:  
                //  
            }  
        }  
    }  




转载:http://blog.csdn.net/arui319/archive/2010/09/07/5868466.aspx
分享到:
评论
1 楼 piaochunzhi 2011-11-04  
有工程文件 给下载一下吗,我学习一下!~

相关推荐

    Android应用开发中自定义ViewGroup视图容器的教程

    主要介绍了Android应用开发中自定义ViewGroup视图容器的教程,重点在于View之间的参数传递,文中还讲到了使用ViewDragHelper自定义ViewGroup的方法,需要的朋友可以参考下

    从源码解析Android中View的容器ViewGroup

    主要介绍了Android中View的容器ViewGroup,本文从源码解析ViewGroup的事件分发机制等,非常有深度,需要的朋友可以参考下

    Android中标签容器控件的实例详解

    在一些APP中我们可以看到一些存放标签的容器控件,和我们平时使用的一些布局方式有些不同,它们一般都可以自动适应屏幕的宽度进行布局,根据对自定义控件的一些理解,今天写一个简单的标签容器控件,给大家参考学习...

    Android自定义控件之继承ViewGroup创建新容器

    主要介绍了Android自定义控件之继承ViewGroup创建新容器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    Android自定义ViewGroup实现标签流容器FlowLayout

    本篇文章讲的是Android 自定义ViewGroup之实现标签流式布局-FlowLayout,开发中我们会经常需要实现类似于热门标签等自动换行的流式布局的功能,网上也有很多这样的FlowLayout,但不影响我对其的学习。和往常一样,...

    ArcGIS for Android地图控件的5大常见操作

    ArcGIS for Android中,地图组件就是MapView,MapView是基于Android中ViewGroup的一个类(参考),也是ArcGIS Runtime SDK for Android中的地图容器,与很多ArcGIS API中的Map、MapControl类的作用是一样的。...

    Android自定义ViewGroup实现流式布局

    本篇给大家带来一个实例,FlowLayout,什么是FlowLayout,我们常在App 的搜索界面看到热门搜索词,就是FlowLayout,我们要实现的就是图中的效果,就是根据容器的宽,往容器里面添加元素,如果剩余的控件不足时候,自行添加到...

    android开发入门与实战(下)

    7.1.2 视图容器组件(Viewgroup) 7.1.3 布局组件(Layout) 7.1.4 布局参数(LayoutParams) 7.2 我的美丽我做主——Android中应用界面布局 7.2.1 实例操作演示 7.2.2 实例编程实现 7.3 不积跬步无以至千里——常用widget...

    Android入门到精通

    第一篇Android系统结构和SDK使用 第1章 Android的系统介绍 1.1 系统介绍 1.2 软件结构和使用的工具 第2章 Android SDK的开发环境 2.1 Android SDK的结构 2.2 Android SDK环境安装 2.3 Android中运行仿真器环境 2.4 ...

    Android应用开发入门教程

    2.3.3. 使用Android中的工具23 2.3.4. 使用logcat24 2.3.5. 使用仿真器控制25 2.3.6. 命令行工具adb、mksdcard等26 2.3.7. 使用设备控制28 2.4 Android中建立工程29 2.4.1. 建立工程29 2.4.2. 查看和编辑各个文件31 ...

    Android自定义控件之翻转按钮的示例代码

    简单起见,直接使用扩展自ViewGroup的LinearLayout,并将我们的控件扩展自LinearLayout。 1.按钮的基本布局如下 &lt;?xml version=1.0 encoding=utf-8?&gt; &lt;LinearLayout xmlns:android=...

    Android移动应用开发实验指导书.docx

    其中,View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器。 (2)Android的布局方式有LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、TableLayout(表格布局)。 (3)...

    android开发文档

    android 开发ppt学习文档 Android应用的所有UI组件都继承自View类。 ViewGroup也是继承自View类,但是ViewGroup主要用作其他UI控件的容器

    仿淘宝商品页上下滑动控件

    仿淘宝商品页上下滑动控件,这是一个viewGroup容器,实现上下两个frameLayout拖动切换,解决与WebView、ScrollView、ListView嵌套冲突。

    Android移动应用开发实验指导书.docx.docx

    其中,View是所有UI组件的基类,而ViewGroup是容纳这些组件的容器。 (2)Android的布局方式有LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、TableLayout(表格布局)。 (3)...

    Android 自定义控件详解及实例代码

    Android系统的视图结构的设计也采用了组合模式,即View作为所有图形的基类,Viewgroup对View继承扩展为视图容器类。 View定义了绘图的基本操作 基本操作由三个函数完成:measure()、layout()、draw(),其内部又分别...

    安卓touch事件的分发和消费机制

    Android中与Touch事件相关的方法包括:dispatchTouchEvent(MotionEvent ev)、...继承ViewGroup的大多是容器控件,如LinearLayout等,而继承View的大部分是显示控件比如TextView,ImageView等,本例演示Touch事件分发过程

    TwelveCustomViews:收集网上的示例,练习理解自定义视图和视图容器类

    说明:上面计划的是对Android的控件和布局进行自定义封装,在阅读API和源码的过程中发现,对他们在Android封装的属性和操作的认识和理解更有意义。 所以,这个工程里的示例程序放弃了封装的计划,选择

    android自定义RadioGroup可以添加多种布局的实现方法

    android自带的RadioGroup是继承自LinearLayout,如果布局...下面就这两个地方动手脚,先拷贝源码,然后去掉RadioGroup(Context context, AttributeSet attrs) 中的方法,我新增了一个方法,查找viewGroup控件中的radio

Global site tag (gtag.js) - Google Analytics