您的位置:首页 > 移动开发 > Android开发

Android 动态加载布局

2012-09-14 10:57 309 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: