如何创建行数和列数未知的动态表格布局?

问题描述 投票:0回答:1

我想创建动态表格布局。我有这些节点(因为每个节点都有单独的样式):

  • 标题行

  • 标题单元格

  • 奇数行

  • 奇数行单元格

  • 偶数行

  • 偶数行单元格 像这样:

     <TableRow
         android:id="@+id/header_row"
         style="@style/HeaderRow"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
    
         <TextView
             android:id="@+id/header_tv"
             style="@style/HeaderText"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />
     </TableRow>
    
     <TableRow
         android:id="@+id/bodyrow_odd"
         style="@style/BodyRowOdd"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
    
         <TextView
             android:id="@+id/body_tv_odd"
             style="@style/BodyTextOdd"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />
     </TableRow>
    
     <TableRow
         android:id="@+id/bodyrow_even"
         style="@style/BodyRowEven"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
    
         <TextView
             android:id="@+id/body_tv_even"
             style="@style/BodyTextEven"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content" />
     </TableRow>
    

如果我想通过膨胀每个节点来创建动态界面,我必须将每个节点放在单独的 xml 中吗?`

android dynamic tablelayout inflate
1个回答
-1
投票

MainActivity.class

import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}

public void init() {
TableLayout stk = (TableLayout) findViewById(R.id.table_main);
TableRow tbrow0 = new TableRow(this);
TextView tv0 = new TextView(this);
tv0.setText(" Sl.No ");
tv0.setTextColor(Color.WHITE);
tbrow0.addView(tv0);
TextView tv1 = new TextView(this);
tv1.setText(" Product ");
tv1.setTextColor(Color.WHITE);
tbrow0.addView(tv1);
TextView tv2 = new TextView(this);
tv2.setText(" Unit Price ");
tv2.setTextColor(Color.WHITE);
tbrow0.addView(tv2);
TextView tv3 = new TextView(this);
tv3.setText(" Stock Remaining ");
tv3.setTextColor(Color.WHITE);
tbrow0.addView(tv3);
// Apply here your HeaderRow style.
tbrow0.setBackgroundColor(Color.BLUE);
stk.addView(tbrow0);
for (int i = 0; i < 25; i++) {
TableRow tbrow = new TableRow(this);
TextView t1v = new TextView(this);
t1v.setText("" + i);
t1v.setTextColor(Color.WHITE);
t1v.setGravity(Gravity.CENTER);
tbrow.addView(t1v);
TextView t2v = new TextView(this);
t2v.setText("Product " + i);
t2v.setTextColor(Color.WHITE);
t2v.setGravity(Gravity.CENTER);
tbrow.addView(t2v);
TextView t3v = new TextView(this);
t3v.setText("Rs." + i);
t3v.setTextColor(Color.WHITE);
t3v.setGravity(Gravity.CENTER);
tbrow.addView(t3v);
TextView t4v = new TextView(this);
t4v.setText("" + i * 15 / 32 * 10);
t4v.setTextColor(Color.WHITE);
t4v.setGravity(Gravity.CENTER);
tbrow.addView(t4v);
if (i % 2 == 0) {
// Apply here your BodyRowEven style.
tbrow.setBackgroundColor(Color.GRAY);
} else {
// Apply here your BodyRowOdd style.
tbrow.setBackgroundColor(Color.LTGRAY);
}
stk.addView(tbrow);
}
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="#ffffff">

<HorizontalScrollView
android:id="@+id/hscrll1"
android:layout_width="fill_parent"
android:layout_height="wrap_content">

<RelativeLayout
android:id="@+id/RelativeLayout1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="center"
android:orientation="vertical">

<TableLayout
android:id="@+id/table_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
</RelativeLayout>
</HorizontalScrollView>
</ScrollView>
</LinearLayout>
© www.soinside.com 2019 - 2024. All rights reserved.