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
相关文章推荐
- Android 动态加载布局
- 【Android】56、动态加载布局的技巧——使用最小宽度限定符
- 【Android】56、动态加载布局的技巧——使用限定符
- Android使用addView动态加载布局文件
- Android 动态加载布局
- 从Java回调机制分析Android动态加载布局过程中出现的IllgalStateException
- Android 动态加载布局
- 【android动态布局】之【ListView动态加载数据模板(使用xml布局)】
- 【Android动态布局】之【ListView动态加载数据】
- Android 实现布局动态加载
- Android 动态加载布局
- 【android动态布局】之【ListView动态加载数据模板(使用xml布局)】
- Android View 动态加载不同xml布局文件
- android动态加载布局文件示例
- 【Android随记】-- Android动态加载布局
- Android 动态加载布局
- [Android 性能优化系列]布局篇之动态加载布局
- Android自带抽屉布局及NavigationView的使用(动态加载头部图片,修改user名称)
- Android 动态加载布局
- Android 实现布局动态加载