Android開発シリーズのカスタムテーブル表示データ

AndroidカスタムTextViewコントロールは、データ表示を容易にするテーブルを形成するために使用されます。
効果を最初に見てください。
ここに画像の説明を挿入
実装手順は次のとおりです。
(1)カスタムコントロールMyTableTextViewはTextViewを継承し、onDrawメソッドをオーバーライドします。単語フレームの操作を中に追加します。

package lyf.com.mytableview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

/**
 * 自定义TextView
 */
public class MyTableTextView extends TextView {
    
    

    Paint paint = new Paint();

    public MyTableTextView(Context context, AttributeSet attrs) {
    
    
        super(context, attrs);
        int color = Color.parseColor("#80b9f2");
        // 为边框设置颜色
        paint.setColor(color);
    }

    @Override
    protected void onDraw(Canvas canvas) {
    
    
        super.onDraw(canvas);
        // 画TextView的4个边
        canvas.drawLine(0, 0, this.getWidth() - 1, 0, paint);
        canvas.drawLine(0, 0, 0, this.getHeight() - 1, paint);
        canvas.drawLine(this.getWidth() - 1, 0, this.getWidth() - 1, this.getHeight() - 1, paint);
        canvas.drawLine(0, this.getHeight() - 1, this.getWidth() - 1, this.getHeight() - 1, paint);
    }
}

(2)メインレイアウト。何も書く必要はありません。LinearLayoutを直接配置するだけです。ただし、テーブルの幅と高さが画面の幅と高さを超えることが多いため、ScrollViewとHorizo​​ntalScrollViewを追加する必要があります。Horizo​​ntalScrollViewがScrollView全体を埋めるには、ScrollViewで属性android:fillViewport = "true"を設定する必要があります。

<?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="match_parent"
    android:orientation="vertical">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fillViewport="true"
        android:scrollbars="none"
        >

        <HorizontalScrollView
            android:id="@+id/scroll_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbarAlwaysDrawHorizontalTrack="false"
            android:scrollbars="none">

            <LinearLayout
                android:id="@+id/MyTable"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="9dp"
                android:orientation="vertical"
                >
            </LinearLayout>

        </HorizontalScrollView>
    </ScrollView>
</LinearLayout>

(3)次に、テーブル表示用のスタイルファイルtable.xmlを記述します。レイアウトファイルは、テーブルの各行のスタイルを表示するために使用されます。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent">

    <lyf.com.mytableview.MyTableTextView
        android:id="@+id/list_1_1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/list_1_2"
        android:layout_alignTop="@+id/list_1_2"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="13sp" />

    <lyf.com.mytableview.MyTableTextView
        android:id="@+id/list_1_2"
        android:layout_width="180dp"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/list_1_1"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="13sp" />

    <lyf.com.mytableview.MyTableTextView
        android:id="@+id/list_1_3"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/list_1_2"
        android:layout_alignTop="@+id/list_1_2"
        android:layout_toRightOf="@+id/list_1_2"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="13sp" />

    <lyf.com.mytableview.MyTableTextView
        android:id="@+id/list_1_4"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/list_1_3"
        android:layout_alignTop="@+id/list_1_3"
        android:layout_toRightOf="@+id/list_1_3"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="13sp" />

    <lyf.com.mytableview.MyTableTextView
        android:id="@+id/list_1_5"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/list_1_4"
        android:layout_alignTop="@+id/list_1_4"
        android:layout_toRightOf="@+id/list_1_4"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="13sp" />

    <lyf.com.mytableview.MyTableTextView
        android:id="@+id/list_1_6"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/list_1_5"
        android:layout_alignTop="@+id/list_1_5"
        android:layout_toRightOf="@+id/list_1_5"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="13sp" />


    <lyf.com.mytableview.MyTableTextView
        android:id="@+id/list_1_7"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/list_1_6"
        android:layout_alignTop="@+id/list_1_6"
        android:layout_toRightOf="@+id/list_1_6"
        android:gravity="center"
        android:textColor="#000"
        android:textSize="13sp" />
</RelativeLayout>

(4)最後に、データをtable.xmlファイルに入れて、メインのレイアウトファイルに表示します。

package lyf.com.mytableview;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

/**
 * 自定义表格显示
 */

public class MainActivity extends Activity {
    
    

    private LinearLayout mainLinerLayout;
    private RelativeLayout relativeLayout;
    private String[] name={
    
    "序号","考号","姓名","出生年月","语文","数学","英语"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mainLinerLayout = (LinearLayout) this.findViewById(R.id.MyTable);
        initData();
    }

    //绑定数据
    private void initData() {
    
    
        //初始化标题
        relativeLayout = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.table, null);
        MyTableTextView title = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_1);
        title.setText(name[0]);
        title.setTextColor(Color.BLUE);

        title = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_2);
        title.setText(name[1]);
        title.setTextColor(Color.BLUE);
        title = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_3);
        title.setText(name[2]);
        title.setTextColor(Color.BLUE);
        title = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_4);
        title.setText(name[3]);
        title.setTextColor(Color.BLUE);
        title = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_5);
        title.setText(name[4]);
        title.setTextColor(Color.BLUE);
        title = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_6);
        title.setText(name[5]);
        title.setTextColor(Color.BLUE);
        title = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_7);
        title.setText(name[6]);
        title.setTextColor(Color.BLUE);
        mainLinerLayout.addView(relativeLayout);

        //初始化内容
        int number = 1;
        for (int i=0;i<10;i++) {
    
    
            relativeLayout = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.table, null);
            MyTableTextView txt = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_1);
            txt.setText(String.valueOf(number));

            txt = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_2);
            txt.setText("320321**********35");
            txt = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_3);
            txt.setText("张三");
            txt = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_4);
            txt.setText("1992/04/21");
            txt = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_5);
            txt.setText("150");
            txt = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_6);
            txt.setText("200");
            txt = (MyTableTextView) relativeLayout.findViewById(R.id.list_1_7);
            txt.setText("120");
            mainLinerLayout.addView(relativeLayout);
            number++;
        }
    }
}

概要:
全体的な考え方は、データをカスタムテーブルスタイルで保存し、表示プロセス中に行単位データで埋め、最後にデータテーブルに統合することです。

参考資料:
https //www.cnblogs.com/Jett/p/5620236.htmlAndroidカスタムテーブル表示データ

おすすめ

転載: blog.csdn.net/langxiaolin/article/details/114260478