您的位置:首页 > 移动开发 > Android开发

Android中ViewGroup等容器控件的使用

2010-09-07 14:16 561 查看
在Android中,可以自定义类,继承ViewGroup等容器类,以实现自己需要的布局显示。

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

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

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:
				//
			}
		}
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: