1.1简析View和ViewGroup

概论


  • View 和 ViewGroup 是 android 比较重要的概念,因为所有的UI组件都继承自它们,初级阶段我们只要了解一些基本概念就可以了,但是深入学习 android 之后,我们还要学习自定义View,自定义ViewGroup,以及View的事件拦截和分发机制.下面放出一张图,相信大家会对 View 和 ViewGroup 的关系有一个直观的了解:

这里写图片描述


一些概念

  • View : 一个View占据了屏幕的一块矩形区域,它负责绘制工作(onDraw方法).View是widgets(位于android.widget包下,包含所有UI组件)的基类.

  • ViewGroup : 是所有布局 (layouts) 的基类,布局是一个不可见的容器,包含其他的 View 和 ViewGroup


View的使用

  • 一个窗口的所有的view组件都被放置在一棵树中,你可以通过代码添加view组件,抑或是在xml文件中定义一棵view树.

    1. 通过代码创建View:


public class MainActivity extends Activity {

   @Override

    public void onCreate(Bundle savedInstanceState){

        super.onCreate(savedInstanceState);

        //创建一个布局LinearLayout

        LinearLayout layout = new LinearLayout(this);

        //在该Activity中显示该布局

        setContentView(layout);

        //设置该布局内view组件为垂直排列

        layout.setOrientation(LinearLayout.VERTICAL);

        //创建一个TextView,在内部类中使用,所以是final型

        final TextView tv = new TextView(this);

        //创建一个Button

        Button bn = new Button(this);

        //设置Button的文本内容

        bn.setText(R.string.show);

        //设置Button的尺寸为wrap_content类型

        bn.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT

        ,ViewGroup.LayoutParams.WRAP_CONTENT));

        //将view添加到布局中

        layout.addView(tv);

        layout.addView(bn);

        //为Button绑定事件监听器

        bn.setOnClickListener(new View.OnClickListener(){

            @Override

            public void onClick(View v){

                tv.setText("this is a layout created by code");

            }

        });

    }

}

2.通过xml创建view:


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

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

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:oritentation="vertical"

  >

    <TextView
        android:id="@+id/text"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

      />

    <Button

        android:id="@+id/button"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:text="@string/show"

        />

</LinearLayout>

文章参考了android官方文档,代码来自<<疯狂android讲义>>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值