继承LinearLayout实现自定义的布局
2018-07-01 本文已影响67人
yezi1989
继续学习:
在Linearlayout的构造函数中通过使用映射机制加载布局文件,即通过Inflater方法,在使用该方法自定义的控件时,由于所有的子元素都是在运行时通过代码动态创建的,所以该控件只能以一个独立的控件形式在Layout文件中声明:
public class CustomLayout extends LinearLayout{
public CustomLayout(Context context){
LayoutInflater mInflater = LayoutInflater.from(context);
View myView = mInflater.inflate(R.layout.receive, null);
addView(myView);
}
}
布局xml文件:
< LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="+id/receive"
androidundefinedrientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
androidundefinedrientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button" />
</LinearLayout>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
< /LinearLayout>
为何还要使用addview:
在Android中,addView(ViewGroup view, index)在指定的index处添加一个view。addView是继承viewGroup的方法,
void android.view.ViewGroup.addView(View child);
void android.view.ViewGroup.addView(View child, LayoutParams params);
void android.view.ViewGroup.addView(View child,int index, LayoutParams params);
其中需要注意的是 index ,在linearlayout中使用addView的时候,如果linearlayout方向是vertical 垂直, index代表添加的child的view在linearlayout的行数,index是0,表示添加的child在linearlayout顶部,-1为底部,可以利用排版View的 addView 函数,将动态产生的View 组件加入到排版View 中。