Android动态加载布局
由于前段时间项目需要,需要在一个页面上加载根据不同的按钮加载不同的布局页面,当时想到用tabhot。不过美工提供的界面图完全用不上tabhot,所以想到了动态加载的方法来解决这一需求。在这里我整理了一下,写了一个DEMO希望大家以后少走点弯路。
首先,我们先把界面的框架图画出来,示意图如下:
中间白部门是一个线性布局文件,我喜欢在画图的时候用不同的颜将一块布局标示出来,方便查看。布局文件代码如下:
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="schemas.android/apk/res/android"
android:orientation="vertical"android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button android:text="加载ListView"android:id="@+id/Button01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</Button>
<Button android:text="加载另外一个页面"android:id="@+id/Button02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></Button>
</LinearLayout>
<LinearLayout android:id="@+id/LinearLayout01" android:background="#FFFFFF"
android:layout_width="fill_parent"
android:layout_height="fill_parent"></LinearLayout>
</LinearLayout>
从上面的效果图可以看出,那块白的线性布局是用来动态加载传进来的布局文件。好了,我们就来做如果把布局文件动态的加载进来。下面我们一步一步来实现这个效果,首先,先把需要的XML勾画出来,分为步骤如下。
新建一个布局用来存放ListView页面,代码如下:
<?xml version="1.0"encoding="UTF-8"?><LinearLayout android:id="@+id/layout"
android:layout_width="fill_parent"android:layout_height="fill_parent"
xmlns:android="schemas.android/apk/res/android">
<ListView android:id="@+id/ListView01" android:layout_width="wrap_content"
android:layout_height="wrap_content"></ListView></LinearLayout>
新建一个ListView每一行数据的样式,代码如下:
<?xml version="1.0"encoding="UTF-8"?><LinearLayout android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"android:layout_height="fill_parent"
xmlns:android="schemas.android/apk/res/android">
android layout布局<TextView android:text="@+id/TextView01"android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView></LinearLayout>
新建另外一个页面,用来区分此页面是动态加载的,代码如下:
<?xml version="1.0"encoding="UTF-8"?><LinearLayout android:id="@+id/hellolayout"
android:layout_width="fill_parent"android:layout_height="fill_parent"
xmlns:android="schemas.android/apk/res/android">
<TextView android:text="HELLO"
android:layout_width="wrap_content"
android:layout_height="wrap_content"></TextView></LinearLayout>
实现ListView的添充数据,这里不详细介绍如何填充ListView每行数据,有不解的朋友可以回头看我写的文章:点击这里,代码如下:
;
import java.util.ArrayList;import java.util.HashMap;
t.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 (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.list_view_row,null);
myHolder.tv=(TextView)convertView.findViewById(R.id.TextView01);
convertView.setTag(myHolder);
}
else
{
myHolder=(Tag();
}
myHolder.tv.(position).get("name").toString());
return convertView;
}
}
项目大纲如下图:
好了,到此我们的准备工作就己经完成,接下来就是要教大家如何实现动态加载上面所画的
布局页面了,先看一下效果图:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论