码迷,mamicode.com
首页 > 其他好文 > 详细

ViewGroup的三个方法

时间:2015-05-11 17:57:24      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:viewgroup

在继承ViewGroup时有三个重要的方法,下面我们就来看看:

 

1onLayout方法

protected void onLayout(boolean changed, int left, int top, int right, int bottom) {

}

在我们继承ViewGroup时会在除了构造函数之外提供这个方法,我们可以看到,在ViewGroup的源代码中方法是这样定义的,也就是父类没有提供方法的内容,需要我们自己实现。

当View要为所有子对象分配大小和位置时,调用此方法

 

2、addView方法

public void addView(View child) {
        addView(child, -1);
}

这个方法是用来想View容器中添加组件用的。我们可以使用这个方法想这个ViewGroup中添加组件。

 

3、getChildAt方法

技术分享
public View getChildAt(int index) {
        try {
            return mChildren[index];
        } catch (IndexOutOfBoundsException ex) {
            return null;
        }
}
技术分享

 这个方法用来返回指定位置的View。

 注意:ViewGroup中的View是从0开始计数的。

 可以说我们自定义ViewGroup时这三个方法是至关重要的,下面我们就来看看自定义ViewGroup使用。

 

 

我们新建一个叫AndroidViewGroup的工程,Activity起名为MainActivity。在写一个继承于ViewGroup的类,名叫HelloViewGroup。

技术分享

-->HelloViewGroup

public class HelloViewGroup extends ViewGroup {

    public HelloViewGroup(Context context, AttributeSet attrs) {
        super(context, attrs);
        // TODO Auto-generated constructor stub
    }
    
    public HelloViewGroup(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        // TODO Auto-generated method stub

    }

}
技术分享

 

技术分享

-->MainActivity类

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new HelloViewGroup(this));
    }
}
技术分享

 

这时你可以运行一下,发现屏幕除了状态栏了那个Label是一片黑,呵呵。下面我们来修改代码,让自己的ViewGroup火起来。

我们新建一个名叫myAddView的方法,这个方法用来向ViewGroup中添加组件:

 

技术分享
/**
     * 添加View的方法
     * 
*/
    public void myAddView(){
        ImageView mIcon = new ImageView(mContext);
        mIcon.setImageResource(R.drawable.haha);
        addView(mIcon);
    }
技术分享

 

然后我们修改onLayout方法:

@Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {
        View v = getChildAt(0);
        v.layout(l, t, r, b);
    }

 

ViewGroup的三个方法

标签:viewgroup

原文地址:http://blog.csdn.net/lee_my_/article/details/45645891

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!