• 通过Layout_weight用ListView来实现一个表格

    Layout_weight的使用
    服务器君一共花费 23.834 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    通过前面的分析,我们知道,如果想要按照权重比例来分配LinearLayout,我们需要将其宽度设置为0dip,如果我们将其宽度设置为“fill_parent"的时候,其控件所占的比例不是权重的比例,我们需要自行计算比例。

    下面我们通过一个实例,来更深入理解与运用。通过layout_weight用ListView来实现一个表格。先来看看最终演示效果:

    1. 先看TestTableActivity的布局:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        xmlns:tools="http://schemas.android.com/tools"  
        android:orientation="vertical"  
        android:layout_margin="10dip"  
        android:layout_width="match_parent"  
        android:layout_height="match_parent" >  
          
        <include   
            layout="@layout/my_list_item"  
            android:id="@+id/table_title"/>
      
        <ListView
            android:id="@+id/my_list"  
            android:divider="#f9b68b"
            android:dividerHeight="1.0dip"  
            android:scrollbars="none"  
            android:cacheColorHint="@android:color/transparent"  
            android:fadingEdge="none"  
            android:layout_width="fill_parent"  
            android:layout_height="wrap_content" >  
        </ListView>  
      
    </LinearLayout>
    

    2. 然后就是表格的title布局,下面就是一个ListView了,很简单的布局,接下来就是ListView每个item的布局 my_list_item.xml

    <?xml version="1.0" encoding="UTF-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:orientation="horizontal"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content" >  
      
        <TextView  
            android:id="@+id/text_name"  
            android:layout_width="0dip"  
            android:layout_height="wrap_content"  
            android:layout_weight="2"  
            android:gravity="center"  
            android:paddingBottom="10dip"  
            android:paddingTop="10dip"  
            android:text="姓名" />  
          
        <View   
            android:layout_width="1.5dip"  
            android:layout_height="fill_parent"  
            android:background="#f9b68b"/>  
      
        <TextView  
            android:id="@+id/text_sex"  
            android:layout_width="0dip"  
            android:layout_height="wrap_content"  
            android:layout_weight="1"  
            android:paddingBottom="10dip"  
            android:paddingTop="10dip"  
            android:gravity="center"  
            android:text="性别" />  
          
         <View   
            android:layout_width="1.5dip"  
            android:layout_height="fill_parent"  
            android:background="#f9b68b"/>  
      
        <TextView  
            android:id="@+id/text_age"  
            android:layout_width="0dip"  
            android:layout_height="wrap_content"  
            android:layout_weight="1"  
            android:paddingBottom="10dip"  
            android:paddingTop="10dip"  
            android:gravity="center"  
            android:text="年龄" />  
      
    </LinearLayout>  
    

    3个TextView的宽度都是0dip,那两个View是中间的分割线,3个TextView的权重比值是2:1:1 ,这样子3个TextView不会因为里面内容的长度而变形。

    3. TestTableActivity

    TestTableActivity 界面代码:

    package net.nowamagic.magicapp_v17;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import android.app.Activity;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.ViewGroup;
    import android.widget.ListView;
    
    import net.nowamagic.test.Person;
    import net.nowamagic.test.TableAdapter;
    
    public class TestTableActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		// TODO Auto-generated method stub
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.lw);
    		
    		//设置表格标题的背景颜色  
            ViewGroup tableTitle = (ViewGroup) findViewById(R.id.table_title);  
            tableTitle.setBackgroundColor(Color.rgb(255, 100, 10));
            
            List<Person> list = new ArrayList<Person>();  
            list.add(new Person("堤格尔维尔穆德·冯伦", "男", 17));  
            list.add(new Person("艾蕾欧诺拉·维尔塔利亚", "女", 17));  
            list.add(new Person("琉德米拉·露利叶", "女", 16));  
            list.add(new Person("苏菲亚·欧贝达斯", "女", 21));  
            list.add(new Person("亚莉莎德拉·阿尔夏芬", "女", 21));  
            list.add(new Person("伊莉莎维塔·法米那", "女", 18));  
            list.add(new Person("凡伦蒂娜·葛林卡·埃斯堤斯", "女", 20));  
            list.add(new Person("奥尔嘉·塔姆", "女", 14));  
            list.add(new Person("巴多兰", "男", 50));  
            list.add(new Person("马斯哈·罗达特", "男", 56));
            
            ListView tableListView = (ListView) findViewById(R.id.my_list);  
            TableAdapter adapter = new TableAdapter(this, list);  
            tableListView.setAdapter(adapter);
    	}
    }
    

    4. Person 类

    package net.nowamagic.test;
    
    public class Person {
    	private String name;  
        private String sex;  
        private int age;  
          
        public Person() {  
            super();  
        }  
          
        public Person(String name, String sex, int age) {  
            super();  
            this.name = name;  
            this.sex = sex;  
            this.age = age;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public String getSex() {  
            return sex;  
        }  
        public void setSex(String sex) {  
            this.sex = sex;  
        }  
        public int getAge() {  
            return age;  
        }  
        public void setAge(int age) {  
            this.age = age;  
        } 
    }
    

    5. ListView的适配器类

    package net.nowamagic.test;
    
    import java.util.List;
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    import net.nowamagic.magicapp_v17.R;
    
    public class TableAdapter extends BaseAdapter {
    	
    	private List<Person> list;  
        private LayoutInflater inflater;
        
        public TableAdapter(Context context, List<Person> list){  
            this.list = list;  
            inflater = LayoutInflater.from(context);  
        }
    
    	@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) {  
            Person person = (Person) this.getItem(position);  
            ViewHolder viewHolder;  
            if(convertView == null){  
                viewHolder = new ViewHolder();  
                convertView = inflater.inflate(R.layout.my_list_item, null);  
                viewHolder.mTextName = (TextView) convertView.findViewById(R.id.text_name);  
                viewHolder.mTextSex = (TextView) convertView.findViewById(R.id.text_sex);  
                viewHolder.mTextAge = (TextView) convertView.findViewById(R.id.text_age);  
                convertView.setTag(viewHolder);  
            }else{  
                viewHolder = (ViewHolder) convertView.getTag();  
            }  
              
            viewHolder.mTextName.setText(person.getName());  
            viewHolder.mTextSex.setText(person.getSex());  
            viewHolder.mTextAge.setText(person.getAge() + "岁");  
              
              
            return convertView;  
        }
    	
    	public static class ViewHolder{  
            public TextView mTextName;  
            public TextView mTextSex;  
            public TextView mTextAge;  
              
        } 
    
    }
    

    通过layout_weight这个属性,我们就轻松实现了表格的功能。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [Python程序设计] urls.py设置技巧 8 个条目
  2. [移动开发] 从代码角度去认识 Handler 4 个条目
  3. [Python程序设计] Tornado源码解析 23 个条目
  4. [PHP程序设计] httpd.conf设置相关 3 个条目
  5. [移动开发] Android布局基本知识 3 个条目
  6. [PHP程序设计] PHP数组探索 4 个条目
  7. [Linux操作系统] CentOS上使用EPEL Repository 2 个条目
  8. [数据库技术] SQL基础语法 1 个条目
  9. [软件工程与项目管理] 开始使用Git 3 个条目
  10. [软件工程与项目管理] 浏览器的HTML解析器 8 个条目
  11. [PHP程序设计] PHP扩展模块安装 1 个条目
  12. [C语言程序设计] 结构体基本知识 1 个条目
窗口 -- [博客]