2016-07-22 5 views
2

Как мне заменить синюю колонку с другими, как сделать синюю колонку с правой стороны?Как поменять столбцы в таблице?

См. this screenshot.

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

      <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++) { 

       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); 


      } 

     } 

    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

Я думаю, что вам нужно перебрать все TableRows и поменять свои взгляды. Например, чтобы поменять местами первый и второй столбцы:

 TableLayout table = (TableLayout)findViewById(R.id.scrollable_part); 
     int sourceColumnIndex = 0; 
     int targetColumnIndex = 1; 
     for (int i = 0; i < table.getChildCount(); i++) 
     { 
      TableRow tr = (TableRow)table.getChildAt(i); 
      View v = tr.getChildAt(sourceColumnIndex); 
      tr.removeViewAt(sourceColumnIndex); 
      tr.addView(v, targetColumnIndex); 
     } 

EDIT: я проверить его в своем собственном маленьком проекте. Теперь я вижу, что в вашем проекте у обмениваемых взглядами разных родителей. Я изменил код, чтобы добавить «TableRow» даже для фиксированной части:

row = new TableRow(this); 
    row.setLayoutParams(wrapWrapTableRowParams); 
    row.setGravity(Gravity.CENTER); 
    row.addView(fixedView); 
    fixedColumn.addView(row); 

И после этого обмена рутины:

   TableLayout fixedColumnTable = (TableLayout) findViewById(R.id.fixed_column); 
       TableLayout table = (TableLayout)findViewById(R.id.scrollable_part); 
       if (table.getChildCount() == fixedColumnTable.getChildCount()) 
       { 
        int fixedColumnIndex = 0; 
        int targetColumnIndex = 2; 
        for (int i = 0; i < table.getChildCount(); i++) 
        { 
         TableRow fixedTR = (TableRow)fixedColumnTable.getChildAt(i); 
         View fixedView = fixedTR.getChildAt(fixedColumnIndex); 

         TableRow targetTR = (TableRow)table.getChildAt(i); 
         View targetView = targetTR.getChildAt(targetColumnIndex); 

         fixedTR.removeViewAt(fixedColumnIndex); 
         targetTR.removeViewAt(targetColumnIndex); 
         fixedTR.addView(targetView, fixedColumnIndex); 
         targetTR.addView(fixedView, targetColumnIndex); 
        } 
       } 
+0

Спасибо за вас, но я трей, чтобы скопировать код и прошлое в моем project ater for loop, но без изменений в столбцах мест. Вы уже пробовали этот код? Вы преуспели? –

+0

Извините, брат Я пробовал, но без результата смотрите здесь: –

+0

Thnks для вас, но не работает Я хочу всегда быть постоянным синим столбцом Anywhere Вы можете добавить код, я добавлен в более чем одном месте не работает, Помните, что я хочу быть постоянным синим столбцом в правой части. И я хочу знать, что места набирают код точно И спасибо –

Смежные вопросы