zoukankan      html  css  js  c++  java
  • 加载layout

        近期对android里面控件修改做了很多实验,由于公司需求很多,不得不重写很多控件。程序目标无非是:高效、轻巧、清晰、标准化
        完成动态加载Layout有两种方法,依据个人喜好进行选择:

    方法1:静态主Layout动态加载静态子Layout
     
     
     
     
    首先构建子Layout:main2
    [xhtml]view plaincopy

    <?xml version="1.0" encoding="utf-8"?>  
    <!--布局可以任意定义,此处拿线性布局举例,里面有2个按钮元素-->  
    <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"  
        android:id="@+id/menubar"   
        android:background="@drawable/menubar"  
        android:layout_width="wrap_content"   
        android:layout_height="wrap_content">  
            <!--按钮1-->  
        <ImageButton android:id="@+id/button1"  
            android:src="@drawable/btn1"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
        ></ImageButton>  
        <!--按钮2-->  
        <ImageButton android:id="@+id/button2"  
            android:src="@drawable/btn2"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
        ></ImageButton>  
    </LinearLayout>  
     
     
    然后构建主Layout:main
     
    [xhtml]view plaincopy

    <?xml version="1.0" encoding="utf-8"?>  
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:id="@+id/background"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:background="@drawable/background">  
        <!--主Layout要给子Layout设置一个容器box,可以在此指定容器的位置,这段是关键部分-->  
        <LinearLayout
        android:id="@+id/box"  
            android:layout_alignParentBottom="true"  
            android:layout_width="wrap_content"  
            android:layout_height="wrap_content"  
            android:layout_centerHorizontal="true">      
        </LinearLayout>  
    </RelativeLayout>  
     
     
    最后在程序中加载子layout:
    [java]view plaincopy

    public class BackgroundTest extends Activity {  

        private View mBarView;                              //      子Layout要以view的形式加入到主Layout中
        private LinearLayout mLinearLayout;                  //      主Layout的容器加载子Layout的View  


        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  

    //      显示主Layout  
            setContentView(R.layout.main);

    //      加载子Layout         
            mBarView = View.inflate(this, R.layout.main2, null);  
            
    //      找到容器  
            mLinearLayout = (LinearLayout)findViewById(R.id.box);  

    //      加上View 结束  
            mLinearLayout.addView(mBarView);  
    }  
     
     
     
    方法2:静态主Layout动态加载动态的Layout
        首先构造你自己的子Layout和上面一样;
        然后构建你自定义的Layout类:
    [java]view plaincopy

    public class MenuLandscapeLinearLayout extends LinearLayout{   
        //  构造函数  
        public MenuLandscapeLinearLayout(Context context) {  
        super(context);  
        // TODO Auto-generated constructor stub  
        //加载需要的属性,加载方法一的子Layout  
        ((Activity) getContext()).getLayoutInflater().inflate(R.layout.main2, this);   
            //在此你可以封装很多方法   
        }     
    }  
     
    最后在程序中动态实例化并加载即可:
    [java]view plaincopy

    public class BackgroundTest extends Activity {  
        /** Called when the activity is first created. */  
        private LinearLayout mLinearLayout;  
        //声明一个子Layout View对象  
        private MenuLandscapeLinearLayout mMenuLandscapeLinearLayout;  
        @Override  
        public void onCreate(Bundle savedInstanceState) {  
            super.onCreate(savedInstanceState);  
    //      加载主Layout  
            setContentView(R.layout.main);    
    //      找到容器        
            mLinearLayout = (LinearLayout)findViewById(R.id.box);  
    //      实例化一个子View  
            mMenuLandscapeLinearLayout=new MenuLandscapeLinearLayout(this);  
    //      添加到容器  
            mLinearLayout.addView(mMenuLandscapeLinearLayout);  
        }  
    }  

  • 相关阅读:
    Domain Logic approaches
    Comparing Spring AOP and AspectJ
    CDI Features
    Java Design Patterns
    第二阶段:代码片段
    第一阶段:学生在线系统需求分析报告
    load data语句实验报告
    Sping AOP Capabilities and Goals
    Java Design Patterns
    CDI Features
  • 原文地址:https://www.cnblogs.com/carbs/p/2573642.html
Copyright © 2011-2022 走看看