您的位置:首页 > 其它

类似如表格-第一行第一列不滚动,其他行列可以上下水平滚动

2011-11-19 18:09 417 查看
public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.table_layout);

TableRow.LayoutParams wrapWrapTableRowParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

int[] fixedColumnWidths = new int[]{20, 20, 20, 20, 20};

int[] scrollableColumnWidths = new int[]{20, 20, 20, 30, 30};

int fixedRowHeight = 50;

int fixedHeaderHeight = 60;

TableRow row = new TableRow(this);

TableLayout header = (TableLayout) findViewById(R.id.table_header);

row.setLayoutParams(wrapWrapTableRowParams);

row.setGravity(Gravity.CENTER);

row.setBackgroundColor(Color.YELLOW);

row.addView(makeTableRowWithText("col 1", fixedColumnWidths[0], fixedHeaderHeight));

row.addView(makeTableRowWithText("col 2", fixedColumnWidths[1], fixedHeaderHeight));

row.addView(makeTableRowWithText("col 3", fixedColumnWidths[2], fixedHeaderHeight));

row.addView(makeTableRowWithText("col 4", fixedColumnWidths[3], fixedHeaderHeight));

row.addView(makeTableRowWithText("col 5", fixedColumnWidths[4], fixedHeaderHeight));

header.addView(row);

TableLayout fixedColumn = (TableLayout) findViewById(R.id.fixed_column);

TableLayout scrollablePart = (TableLayout) findViewById(R.id.scrollable_part);

for(int i = 0; i < 10; i++) {

TextView fixedView = makeTableRowWithText("row number " + i, scrollableColumnWidths[0], fixedRowHeight);

fixedView.setBackgroundColor(Color.BLUE);

fixedColumn.addView(fixedView);

row = new TableRow(this);

row.setLayoutParams(wrapWrapTableRowParams);

row.setGravity(Gravity.CENTER);

row.setBackgroundColor(Color.WHITE);

row.addView(makeTableRowWithText("value 2", scrollableColumnWidths[1], fixedRowHeight));

row.addView(makeTableRowWithText("value 3", scrollableColumnWidths[2], fixedRowHeight));

row.addView(makeTableRowWithText("value 4", scrollableColumnWidths[3], fixedRowHeight));

row.addView(makeTableRowWithText("value 5", scrollableColumnWidths[4], fixedRowHeight));

scrollablePart.addView(row);

}

}

private TextView recyclableTextView;

public TextView makeTableRowWithText(String text, int widthInPercentOfScreenWidth, int fixedHeightInPixels) {

int screenWidth = getResources().getDisplayMetrics().widthPixels;

recyclableTextView = new TextView(this);

recyclableTextView.setText(text);

recyclableTextView.setTextColor(Color.BLACK);

recyclableTextView.setTextSize(20);

recyclableTextView.setWidth(widthInPercentOfScreenWidth * screenWidth / 100);

recyclableTextView.setHeight(fixedHeightInPixels);

return recyclableTextView;

}

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center_horizontal"

android:id="@+id/fillable_area">

<TableLayout

android:id="@+id/table_header"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

<ScrollView

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<LinearLayout android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:gravity="center_horizontal"

android:id="@+id/fillable_area">

<TableLayout

android:id="@+id/fixed_column"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<HorizontalScrollView

android:layout_width="fill_parent"

android:layout_height="wrap_content">

<TableLayout

android:id="@+id/scrollable_part"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

</HorizontalScrollView>

</LinearLayout>

</ScrollView>

</LinearLayout>

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: