Android学习笔记_31_通过后台代码生成View对象以及动态加载XML布局文件到LinearLayout

  一、布局文件part.xml:

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

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >



    <Button

        android:id="@+id/button1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_marginTop="64dp"

        android:text="添加" />



    <EditText

        android:id="@+id/editText1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:ems="10" >



        <requestFocus />

    </EditText>



</RelativeLayout>

  二、通过后台代码生成前台布局:

package com.example.codeui;



import android.os.Bundle;

import android.app.Activity;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.Menu;

import android.view.View;

import android.view.ViewGroup;

import android.widget.LinearLayout;

import android.widget.TextView;



public class MainActivity extends Activity {

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        LinearLayout layout=new LinearLayout(this);

        layout.setOrientation(LinearLayout.VERTICAL);//显示方向

        

        //将view对象添加到布局界面

        TextView textView =new TextView(this);

        textView.setText("Hello Code UI");

        ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(

                ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);

        //添加

        layout.addView(textView,params);

        

        //添加外部xml定义的布局

        View view = getPartView();

        layout.addView(view);

        

        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(

                ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.FILL_PARENT);

        setContentView(layout, layoutParams);

        //setContentView(R.layout.activity_main);

        //采用代码编写效率高,但是很难维护

    }



    //通过加载xml文件将view添加到布局中

    public View getPartView() {

        //将xml布局文件生成view对象通过LayoutInflater

        LayoutInflater inflater =(LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        //将view对象挂载到那个父元素上,这里没有就为null

        return inflater.inflate(R.layout.part, null);

    }



    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);

        return true;

    }



}

 

你可能感兴趣的:(LinearLayout)