TableLayout一般都会直接在XML里面进行编写吧,其实在代码里面也是可以完全实现的,所以呢我自己就做了一个在代码里面实现TableLayout的内容显示.
首先是main.XML代码:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<LinearLayout
android:id="@+id/table_ll"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
></LinearLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
第二步是设置内容显示的XML文件,名字自己随便取:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal"
android:paddingBottom="12dp"
android:paddingTop="12dp" >
<TextView
android:id="@+id/tv_list_item"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:textSize="20px"
/>
<ImageView
android:id="@+id/iv_list_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:src="@drawable/arrow_right" />
</LinearLayout>
最后是主activity代码:
public class Table_Layout extends Activity{
private static final String MSG_1[]={"小白","小黑","小黄"};
private LinearLayout.LayoutParams layoutParams=null;
private LinearLayout Layout_ll;
private TableLayout tableLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.table_layout);
Layout_ll=(LinearLayout)findViewById(R.id.table_ll);
setTable();
}
private void setTable() {
layoutParams=new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
layoutParams.bottomMargin = 30;
layoutParams.topMargin = 40;
layoutParams.leftMargin=30;
layoutParams.rightMargin=30;
Layout_ll.addView(getTable(MSG_1), layoutParams);
}
//获取table
public TableLayout getTable(final String[] array){
tableLayout=new TableLayout(this);
tableLayout.setLayoutParams(layoutParams);
tableLayout.setStretchAllColumns(true);
for (int i = 0; i < array.length; i++) {
TableRow tableRow=new TableRow(this);
View view=getView(array[i],i,array.length);
tableRow.addView(view);
tableLayout.addView(tableRow);
}
return tableLayout;
}
public View getView(final String msg,int current_Id,int totle_Num){
LinearLayout linearLayout=new LinearLayout(this);
linearLayout.setOrientation(1);
View view=LayoutInflater.from(this).inflate(R.layout.set_content, null);
view.setBackgroundDrawable(new BitmapDrawable());
view.setFocusable(true);
view.setClickable(true);
TextView tv_name=(TextView)view.findViewById(R.id.tv_list_item);
tv_name.setText(msg);
tv_name.setTextSize(15);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(msg.equals(MSG_1[0])){
Toast.makeText(Table_Layout.this, "小白", Toast.LENGTH_SHORT).show();
}else if(msg.equals(MSG_1[1])){
Toast.makeText(Table_Layout.this, "小黑", Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(Table_Layout.this, "小黄", Toast.LENGTH_SHORT).show();
}
}
});
// 只有一项
if (totle_Num == 1) {
view.setBackgroundResource(R.drawable.default_selector);
return view;
}
// 第一项
else if (current_Id == 0) {
view.setBackgroundResource(R.drawable.default_selector);
}
// 最后一项
else if (current_Id == totle_Num - 1) {
view.setBackgroundResource(R.drawable.default_selector);
setViewPadding(view);
} else {
view.setBackgroundResource(R.drawable.default_selector);
setViewPadding(view);
}
linearLayout.addView(view);
return linearLayout;
}
private void setViewPadding(View view) {
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.topMargin = -2;
view.setLayoutParams(layoutParams);
}
配上default_selector.xml代码:
<?xml version="1.0" encoding="utf-8"?>
<selector
<item android:state_pressed="true"><shape>
<stroke android:width="1.0dp" android:color="#bfbfbf" />
<solid android:color="#00000000" />
<corners android:radius="5dp" />
</shape></item>
<item><shape>
<stroke android:width="1.0dp" android:color="#bfbfbf" />
<solid android:color="#00000000" />
<corners android:radius="5dp" />
</shape></item>
</selector>