Android中ViewGroup等容器控件的应用

Android中ViewGroup等容器控件的使用在Android中,可以自定义类,继承ViewGroup等容器类,以实现自己需要的布

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   有工程文件 给下载一下吗,我学习一下!~