这次研究的是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中的,还是先添加在自定义的类中的???
呵呵,这个一个需要探究的问题,有兴趣的可以先自己研究下,在以后的章节中我会给出研究结果。
未完待续……
原创文章,转载请注明: 转载自DEVDIV博客