继承ViewGroup研究(2)--在XML中使用ViewGroup初探

这次研究的是XML中布局自定义ViewGroup,为什么要在XML中自定义ViewGroup,呵呵,其实这个东西吧,还真没法说,我个人的感觉是可以方便的使用Android中已经给出的各种组件,还有自己的组件。下面我们就来看看在XML中布局。

 

一、XML中使用ViewGroup概述

 

首先我们要知道Android中的View以及ViewGroup,甚至是自己继承Android中系统组件的View,都可以在XML中使用。不过要注意的一点就是一定要在自定义的类中添加上以下的构造器:

public MyView(Context context, AttributeSet attrs) {

       super(context, attrs);

       // TODO Auto-generated constructor stub

    }

 

同样,在XML中定义ViewGroup也必须有这个方法。因为从Android系统解析自定义的View时是根据这个方法来解析的,没有这个方法是不行的。各位可以试一试。

 

 

二、在XML中使用

 

我们先来修改MainActivity

 

public class MainActivity extends Activity {

    /** Called when the activity is first created. */

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

}

 

 

 

 

 

 

 

 

修改main.xml

 

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    >

<TextView 

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />

    <com.fxhy.stady.myviewGroup.HelloViewGroup

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"/>

</LinearLayout>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

我们运行一下:

 

 

 

 

完美运行,哈哈,有没点成就感啊,哈哈。

 

三、关于三种在XML使用ViewGroup

 

其实我们有三种在XML布局中使用ViewGroup的方法:

 

1、直接使用ViewGroup

这个就是我们刚才使用的那个方法,这个方法是在自己写的ViewGroup中通过addView方法一个一个添加子View,个人感觉这样使用不太爽,呵呵,但是不可否认这样使用有其独挡一面的地方。

 

2、在XML中向ViewGroup中添加View

这个方法我们将在下一节研究,关于这个的话会涉及到一些其他的知识点,我们现在先不探讨这个。

 

3、混合布局

就像css+table一样,呵呵,我们是不是可以既使用XML中声明的ViewGroup中添加View,又在自己写的类中添加View???那这样添加的View是先添加XML中的,还是先添加在自定义的类中的???

呵呵,这个一个需要探究的问题,有兴趣的可以先自己研究下,在以后的章节中我会给出研究结果。

 

未完待续......

 

 

posted @ 2012-03-20 09:43  繁星皓月  阅读(2568)  评论(0编辑  收藏  举报