概论
- 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树.
- 通过代码创建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讲义>>