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; } }