zoukankan      html  css  js  c++  java
  • Android中使用ListView实现自适应表格

    GridView比ListView更容易实现自适应的表格,但是GridView每个格单元的大小固定,而ListView实现的表格可以自定义每个格单元的大小,但因此实现自适应表格也会复杂些(格单元大小不一)。另外,GridView实现的表格可以定位在具体某个格单元,而ListView实现的表格则只能定位在表格行。因此还是那句老话:根据具体的使用环境而选择GridView 或者 ListView实现表格。

    先贴出本文程序运行的效果图:


    本文实现的ListView表格,可以每个格单元大小不一,文本(TextView)或图片(ImageView)做格单元的数据,不需要预先定义XML实现样式(自适应的根本目标)。由于ListView置于HorizontalScrollView中,因此对于列比较多/列数据比较长的数据表也能很好地适应其宽度。

    main.xml源码如下:

    view plaincopy to clipboardprint?
    <?xml version="1.0" encoding="utf-8"?>  
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
        android:orientation="vertical" android:layout_width="fill_parent"  
        android:layout_height="fill_parent">  
        <HorizontalScrollView android:id="@+id/HorizontalScrollView01"  
            android:layout_height="fill_parent" android:layout_width="fill_parent">  
            <ListView android:id="@+id/ListView01" android:layout_height="wrap_content"  
                android:layout_width="wrap_content"></ListView>  
        </HorizontalScrollView>  
    </LinearLayout>  

    主类testMyListView.java的源码如下:

    view plaincopy to clipboardprint?
    package com.testMyListView;   
    import java.util.ArrayList;   
    import com.testMyListView.TableAdapter.TableCell;   
    import com.testMyListView.TableAdapter.TableRow;   
    import android.app.Activity;   
    import android.os.Bundle;   
    import android.view.View;   
    import android.widget.AdapterView;   
    import android.widget.ListView;   
    import android.widget.LinearLayout.LayoutParams;   
    import android.widget.Toast;   
    /**  
     * @author hellogv  
     */  
    public class testMyListView extends Activity {   
        /** Called when the activity is first created. */  
        ListView lv;   
        @Override  
        public void onCreate(Bundle savedInstanceState) {   
            super.onCreate(savedInstanceState);   
            setContentView(R.layout.main);   
            this.setTitle("ListView自适应实现表格---hellogv");   
            lv = (ListView) this.findViewById(R.id.ListView01);   
            ArrayList<TableRow> table = new ArrayList<TableRow>();   
            TableCell[] titles = new TableCell[5];// 每行5个单元   
            int width = this.getWindowManager().getDefaultDisplay().getWidth()/titles.length;   
            // 定义标题   
            for (int i = 0; i < titles.length; i++) {   
                titles[i] = new TableCell("标题" + String.valueOf(i),    
                                        width + 8 * i,   
                                        LayoutParams.FILL_PARENT,    
                                        TableCell.STRING);   
            }   
            table.add(new TableRow(titles));   
            // 每行的数据   
            TableCell[] cells = new TableCell[5];// 每行5个单元   
            for (int i = 0; i < cells.length - 1; i++) {   
                cells[i] = new TableCell("No." + String.valueOf(i),   
                                        titles[i].width,    
                                        LayoutParams.FILL_PARENT,    
                                        TableCell.STRING);   
            }   
            cells[cells.length - 1] = new TableCell(R.drawable.icon,   
                                                    titles[cells.length - 1].width,    
                                                    LayoutParams.WRAP_CONTENT,   
                                            &nb


  • 相关阅读:
    numpy 基础 —— np.linalg
    图像旋转后显示不完全
    opencv ---getRotationMatrix2D函数
    PS1--cannot be loaded because the execution of scripts is disabled on this system
    打开jnlp Faild to validate certificate, the application will not be executed.
    BATCH(BAT批处理命令语法)
    oracle vm virtualbox 如何让虚拟机可以上网
    merge 实现
    Windows batch,echo到文件不成功,只打印出ECHO is on.
    python2.7.6 , setuptools pip install, 报错:UnicodeDecodeError:'ascii' codec can't decode byte
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6470006.html
Copyright © 2011-2022 走看看