继承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 中。

上一篇下一篇

猜你喜欢

热点阅读