Android动态布局方法总结
//绝对布局
AbsoluteLayout abslayout=new AbsoluteLayout (this);
setContentView(abslayout);
Button btn1 = new Button(this);
btn1.setText(”this is a button”);
btn1.setId(1);
AbsoluteLayout.LayoutParams lp1 =
new AbsoluteLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0,100);
abslayout.addView(btn1, lp1);
//相对布局
RelativeLayout relativeLayout = new RelativeLayout(this);
setContentView(relativeLayout);
AbsoluteLayout abslayout=new AbsoluteLayout (this);
RelativeLayout.LayoutParams lp1 = newRelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
lp1.addRule(RelativeLayout.ALIGN_PARENT_TOP);
lp1.addRule(RelativeLayout.CENTER_HORIZONTAL,RelativeLayout.TRUE);
relativeLayout.addView(abslayout ,lp1);
//线性布局
LinearLayout ll = new LinearLayout(this);
EditText et = new EditText();
ll.addView(et);
//动态添加布局的方法1.
LinearLayout linearlayout = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main1,null);
setContentView(linearlayout);
LinearLayout linearlayout2 = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main2,linearlayout);
//这样 main2 作为 main1的子布局 加到了 main1的 根节点下
//动态添加布局的方法2 addView.
LinearLayout linearlayout = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main1,null);
setContentView(linearlayout);
LinearLayout linearlayout2 = (LinearLayout)this.getLayoutInflater().inflate(R.layout.main2,null);
linearlayout.addView(linearlayout2);
以线性布局为例:
package com.example.dynamiclayoutdemo;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity implements OnClickListener{
private LinearLayout mMainLinearLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewByID();
}
private void findViewByID(){
findViewById(R.id.button01).setOnClickListener(this);
findViewById(R.id.button02).setOnClickListener(this);
mMainLinearLayout = (LinearLayout) findViewById(R.id.main_linearlayout);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button01:{
final LayoutInflater mInflater = LayoutInflater.from(this);
LinearLayout layout = (LinearLayout) mInflater.inflate(
R.layout.text, null).findViewById(R.id.textview_layout);
TextView lv=(TextView)layout.getChildAt(0);
mMainLinearLayout.removeAllViews();
mMainLinearLayout.addView(layout);
break;
}
case R.id.button02:{
final LayoutInflater mInflater = LayoutInflater.from(this);
LinearLayout layout = (LinearLayout) mInflater.inflate(
R.layout.listview, null).findViewById(R.id.listview_layout);
ListView lv=(ListView)layout.getChildAt(0);
lv.setAdapter(new ListAdapter(MainActivity.this));
mMainLinearLayout.removeAllViews();
mMainLinearLayout.addView(layout);
break;
}
default:
break;
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_one" >
</Button>
<Button
android:id="@+id/button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_two" >
</Button>
</LinearLayout>
<LinearLayout
android:id="@+id/main_linearlayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF" >
</LinearLayout>
</LinearLayout>
package com.example.dynamiclayoutdemo;
import java.util.ArrayList;
import java.util.HashMap;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
public class ListAdapter extends BaseAdapter {
ArrayList<HashMap<String, Object>> list = new ArrayList<HashMap<String, Object>>();
private LayoutInflater inflater;
public ListAdapter(Context contex)
{
inflater=LayoutInflater.from(contex);
HashMap<String, Object> map=new HashMap<String, Object>();
for (int i = 0; i < 10; i++) {
map.put("name", "例子");
list.add(map);
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return list.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return list.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder myHolder;
if (convertView==null) {
myHolder=new ViewHolder();
convertView=inflater.inflate(R.layout.listview_item, null);
myHolder.tv=(TextView)convertView.findViewById(R.id.TextView01);
convertView.setTag(myHolder);
}
else
{
myHolder=(ViewHolder)convertView.getTag();
}
myHolder.tv.setText(list.get(position).get("name").toString());
return convertView;
}
public class ViewHolder {
public TextView tv;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listview_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<ListView
android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@+id/TextView01" >
</TextView>
</LinearLayout>
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textview_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" >
</TextView>
</LinearLayout>
资源下载地址:http://download.csdn.net/detail/niejing654092427/4569644