2016-07-23 69 views
-1

我想让包含值为5的列。如图所示,它位于最右侧,我希望它是固定的,而不是移动中的 。我该如何在android表格中制作一个固定列?

enter image description here

<?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="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" 
      > 


      <HorizontalScrollView 
       android:id="@+id/scroller" 
       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> 



    package com.example.freez_t00; 

import java.util.ArrayList; 

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.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.Gravity; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TableRow.LayoutParams; 
import android.widget.TextView; 

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; 




    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 

      setContentView(R.layout.activity_main); 






      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); 
      //header (fixed vertically) 
      TableLayout header=(TableLayout)findViewById(R.id.table_header); 

      row.setLayoutParams(wrapWrapTableRowParams); 
      row.setGravity(Gravity.CENTER); 
      row.setBackgroundColor(Color.YELLOW); 
      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)); 

      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.fixed_column); 
      //rest of the table (within a scroll view) 
      TableLayout scrollablePart = (TableLayout)findViewById(R.id.scrollable_part); 
      for(int i = 0; i < 10; i++) { 
        row = new TableRow(this); 
        row.setLayoutParams(wrapWrapTableRowParams); 
        row.setGravity(Gravity.CENTER); 
        row.setBackgroundColor(Color.WHITE); 
        row.addView(makeTableRowWithText("value 1", scrollableColumnWidths[1], fixedRowHeight)); 
        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); 
      } 








    } 




    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); 
    } 
} 
+0

使用两个表格。一个滚动。另一列有那一列? –

+0

谢谢你,我会尝试,但你可以在这里发布代码xml –

+0

我不知道它是否会工作,所以我没有任何代码 –

回答

0
<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/fillable_area" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:gravity="center_horizontal" 
android:orientation="vertical"> 

<TableLayout 
    android:id="@+id/table_header" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"/> 

<ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:gravity="center_horizontal" 
     android:orientation="horizontal"> 

     <TableLayout 
      android:id="@+id/scrollable_part" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 
</ScrollView> 

</LinearLayout> 



package com.example.freez_t00; 



public class MainActivity extends Activity { 

private TextView recyclableTextView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_main); 

    TableRow.LayoutParams wrapWrapTableRowParams = new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 
    int[] fixedColumnWidths = new int[]{20, 20,20, 20, 20}; 
    int[] scrollableColumnWidths = new int[]{20, 20, 20, 20, 20}; 
    int fixedRowHeight = 70; 
    int fixedHeaderHeight = 70; 
    TableRow row = new TableRow(this); 
    //header (fixed vertically) 
    TableLayout header=(TableLayout)findViewById(R.id.table_header); 

    row.setLayoutParams(wrapWrapTableRowParams); 
    row.setBackgroundColor(Color.YELLOW); 
    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)); 

    header.addView(row); 

    // TableLayout fixedColumn = (TableLayout) findViewById(R.id.fixed_column); 
    //rest of the table (within a scroll view) 
    TableLayout scrollablePart = (TableLayout)findViewById(R.id.scrollable_part); 
    for(int i = 0; i < 10; i++) { 
     row = new TableRow(this); 
     row.setLayoutParams(wrapWrapTableRowParams); 
     row.setGravity(Gravity.CENTER); 
     row.setBackgroundColor(Color.WHITE); 
     row.addView(makeTableRowWithText("value 1", scrollableColumnWidths[1], fixedRowHeight)); 
     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); 
    } 
} 

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

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

    recyclableTextView = new TextView(MainActivity.this); 
    recyclableTextView.setText(text); 

    recyclableTextView.setTextColor(Color.BLACK); 
    recyclableTextView.setTextSize(20); 
    recyclableTextView.setGravity(Gravity.CENTER); 
    recyclableTextView.setWidth(widthInPercentOfScreenWidth * screenWidth/100); 
    recyclableTextView.setHeight(fixedHeightInPixels); 
    return recyclableTextView; 
} 

}

这可能是帮助你。 我只是改革你的代码。

相关问题