Android TableRow

分享到:

TableRow是TableLayout表格布局的子布局,用来形成具体的行,之前的文档已经介绍过TalbeLayout布局的基本应用方法其中有简单介绍过TableRow,当TableLayout中包含多少个TableRow就有多少行。如需了解TableLayout可参考之前的文档"Android TableLayout",本章通过实例进一步了解TableRow的使用方法。(提示:TableRow的本质也是一个Layout,默认情况里面的元素会水平排列,当TableRow的父元素不是TableLayout的话,这种情况表现的像一个LinearLayout

TableRow实例1:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
          xmlns:tools="http://schemas.android.com/tools"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          tools:context=".MainActivity"
          android:stretchColumns="0" >
  <TableRow>
  	<TextView
          android:text="第一行第一列"
          android:background="#aa0000"
          android:padding="3dip" />
  	<TextView
          android:text="第一行第二列"
          android:padding="3dip"
          android:gravity="center_horizontal"
          android:background="#00aa00" />
  	<TextView
          android:text="第一行第三列"
          android:gravity="right"
          android:background="#0000aa"
          android:padding="3dip" />
  </TableRow>

	<TableRow>
  	<TextView
          android:text="第二行第一列"
          android:padding="3dip" />
  	<TextView
          android:text="第二行第二列"
          android:gravity="right"
          android:padding="3dip" />
  </TableRow>
  
  <TextView
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="@string/hello_world" />
</TableLayout>

通过这个例子可以看出TableRow就是形成TableLayout每一行的基本元素,最后面的TextView没有包含在TableRow中也能自成一行,这说明TableLayout这种布局不一定必须使用TableRow。最终效果如下图所示:

TableRow实例

TableRow实例2,前面的例子是在静态XML布局中实现的,这次我们通过java代码动态生成TableRow:

java代码(本例代码来自网络):

package yan.activity_06;
import android.os.Bundle;
import android.view.ViewGroup;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.app.Activity;

public class MainActivity extends Activity {
          /** Called when the activity is first created. */ 
          private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; 
          private final int FP = ViewGroup.LayoutParams.FILL_PARENT; 
  
          @Override 
          public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.activity_main); 
          //新建TableLayout01的实例 
          TableLayout tableLayout = (TableLayout)findViewById(R.id.TableLayout01); 
          //全部列自动填充空白处 
          tableLayout.setStretchAllColumns(true); 
          //生成10行,8列的表格 
          for(int row=0;row<10;row++) 
          { 
          TableRow tableRow=new TableRow(this); 
          for(int col=0;col<8;col++) 
          { 
          //tv用于显示 
          TextView tv=new TextView(this); 
          tv.setText("("+col+","+row+")"); 
          tableRow.addView(tv); 
          } 
          //新建的TableRow添加到TableLayout 
          tableLayout.addView(tableRow, new TableLayout.LayoutParams(FP, WC)); 
          } 
          }
          }
          package yan.activity_06;
        import android.os.Bundle;
          import android.view.ViewGroup;
          import android.widget.TableLayout;
          import android.widget.TableRow;
          import android.widget.TextView;
          import android.app.Activity;
        public class MainActivity extends Activity {
          /** Called when the activity is first created. */ 
          private final int WC = ViewGroup.LayoutParams.WRAP_CONTENT; 
          private final int FP = ViewGroup.LayoutParams.FILL_PARENT; 
  
          @Override 
          public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.activity_main); 
          //新建TableLayout01的实例 
          TableLayout tableLayout = (TableLayout)findViewById(R.id.TableLayout01); 
          //全部列自动填充空白处 
          tableLayout.setStretchAllColumns(true); 
          //生成10行,8列的表格 
          for(int row=0;row<10;row++) 
          { 
          TableRow tableRow=new TableRow(this); 
          for(int col=0;col<8;col++) 
          { 
          //tv用于显示 
          TextView tv=new TextView(this); 
          tv.setText("("+col+","+row+")"); 
          tableRow.addView(tv); 
          } 
          //新建的TableRow添加到TableLayout 
          tableLayout.addView(tableRow, new TableLayout.LayoutParams(FP, WC)); 
		} 
	}
}

以上代码的核心语句是tableLayout.addView方法,addView方法可以把任何view对像以子控件的形式添加到本身当中,这样一来就可以非常灵活的控制tablerow的数量,通过数据可以实现TableRow的动态加载和显示,项目开发中经常使用的也是这种方法。以下是对应的XML布局:

<?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"
>
<TableLayout
android:id="@+id/TableLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</TableLayout>
</LinearLayout>

效果如下图:

TableRow实例效果

以上两个例子分别从XML静态布局和java动态加载的方式演示了TableRow基本应用方法,看到这里相向大家已经掌握了TableRow和TableLayout。

昵    称:
验证码:

相关文档:

Android控件
Android基础知识
Android组件
Android实例