继承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中的,还是先添加在自定义的类中的???
呵呵,这个一个需要探究的问题,有兴趣的可以先自己研究下,在以后的章节中我会给出研究结果。
未完待续......