ViewGroup

来源:互联网 发布:淘宝买家旺旺号是什么 编辑:程序博客网 时间:2024/05/01 02:52
以下是我在网上找到的一篇内容,希望对你有所帮助!!

在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:   
                //   
            }   
        }   
    }   
}  
原创粉丝点击