I want to set the table with small devices, please see this image to know my problem.
If you know the code to freeze the size of each row or modify the XML file, please tell me.
My 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"
android:gravity="right"
android:id="@+id/fillable_area"
>
<TableLayout
android:gravity="right"
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="match_parent"
android:layout_height="match_parent">
<HorizontalScrollView
android:id="@+id/scroller"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content">
<TableLayout
android:id="@+id/scrollable_part"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
</HorizontalScrollView>
<TableLayout
android:id="@+id/scrollable_part2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</ScrollView>
</LinearLayout>
My code:
package com.examp.swap_items;
import java.util.ArrayList;
import java.util.List;
import android.R.layout;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.HorizontalScrollView;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TableRow.LayoutParams;
import android.widget.TextView;
import android.app.Activity;
public class MainActivity extends Activity {
private boolean showSummaries;
private TableLayout summaryTable;
private TableLayout frozenTable;
private TableLayout contentTable;
private Button backButton ;
private HorizontalScrollView hor;
private TextView recyclableTextView;
private String[] allColors ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Color[] colors = {};
TableRow.LayoutParams wrapWrapTableRowParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
int[] fixedColumnWidths = new int[]{20,20, 20,20, 20, 20};
int[] scrollableColumnWidths = new int[]{20,20, 20, 20, 20, 20};
int fixedRowHeight = 50;
int fixedHeaderHeight = 60;
TableRow row = new TableRow(this);
//header (fixed vertically)
TableLayout header=(TableLayout)findViewById(R.id.table_header);
row.setLayoutParams(wrapWrapTableRowParams);
row.setGravity(Gravity.CENTER);
row.setBackgroundColor(Color.WHITE);
row.addView(makeTableRowWithText("col1",fixedColumnWidths[0],fixedHeaderHeight));
row.addView(makeTableRowWithText("col2",fixedColumnWidths[1],fixedHeaderHeight));
row.addView(makeTableRowWithText("col3",fixedColumnWidths[2],fixedHeaderHeight));
row.addView(makeTableRowWithText("col4",fixedColumnWidths[3],fixedHeaderHeight));
row.addView(makeTableRowWithText("col5",fixedColumnWidths[4],fixedHeaderHeight));
// row.addView(makeTableRowWithText("col6", fixedColumnWidths[5],fixedHeaderHeight));
header.addView(row);
hor = (HorizontalScrollView)findViewById(R.id.scroller);
hor.postDelayed(new Runnable(){
public void run() {
hor.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
}},1L);
TableLayout fixedColumn = (TableLayout) findViewById(R.id.scrollable_part2);
//rest of the table (within a scroll view)
TableLayout scrollablePart = (TableLayout)findViewById(R.id.scrollable_part);
for(int i = 0; i < 10; i++) {
TextView fixedView = makeTableRowWithText("fixed number " + i, scrollableColumnWidths[0], fixedRowHeight);
fixedView.setBackgroundColor(Color.GREEN);
fixedView.setGravity(Gravity.RIGHT);
fixedColumn.addView(fixedView);
row = new TableRow(this);
row.setLayoutParams(wrapWrapTableRowParams);
row.setGravity(Gravity.LEFT);
if(i==1)row.setBackgroundColor(Color.RED);
if(i==2)row.setBackgroundColor(Color.MAGENTA);
if(i==3)row.setBackgroundColor(Color.YELLOW);
if(i==4)row.setBackgroundColor(Color.GRAY);
if(i==5)row.setBackgroundColor(Color.LTGRAY);
if(i==6)row.setBackgroundColor(Color.WHITE);
if(i==7)row.setBackgroundColor(Color.CYAN);
if(i==8)row.setBackgroundColor(Color.TRANSPARENT);
if(i==9)row.setBackgroundColor(Color.MAGENTA);
row.addView(makeTableRowWithText("scroll 1", scrollableColumnWidths[1], fixedRowHeight));
row.addView(makeTableRowWithText("scroll 2", scrollableColumnWidths[1], fixedRowHeight));
row.addView(makeTableRowWithText("scroll 3", scrollableColumnWidths[2], fixedRowHeight));
row.addView(makeTableRowWithText("scroll 4", scrollableColumnWidths[3], fixedRowHeight));
row.addView(makeTableRowWithText("scroll 5", scrollableColumnWidths[4], fixedRowHeight));
row.addView(makeTableRowWithText("scroll 6", scrollableColumnWidths[5], fixedRowHeight));
scrollablePart.addView(row);
}
}
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;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}