0

テーブルで、回転の可能性を考慮して、赤い柱を右側から左側に移動しようとしました。

を使用してみましたandroid:gravity="right"が、結果はありませんでした。

緑色の列を右端に移動し、他の列を問題なく左に移動するにはどうすればよいですか。

ここにスクリーンショットがあります

私のレイアウト:

<?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="fill_parent"
            android:layout_height="fill_parent"
            android:gravity="right"
            >
             <TableLayout
                    android:gravity="right"
                    android:id="@+id/scrollable_part2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"/>
             <HorizontalScrollView
             android:gravity="left"
             android:id="@+id/scroller"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content">
                <TableLayout
                    android:gravity="left"
                    android:id="@+id/scrollable_part"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"/>
            </HorizontalScrollView>
        </LinearLayout>
    </ScrollView>
</LinearLayout>

私のコード:

package com.examp.swap_items;
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.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.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;


    @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.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));
            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);
                row.setBackgroundColor(Color.RED);
                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));
                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);
    }
}
4

1 に答える 1

0

重力はこの問題の解決策ではありません。android:gravityプロパティは要素のコンテンツを移動します。そのため、すべての「固定」テキストが列の右側に配置されていることがわかります。

内の子の順序はLinearLayout、レイアウト xml に表示される順序によってのみ決定されます。縦型レイアウトでは上から下に、横型レイアウトでは左から右に順番に配置されます。したがって、あなたの場合、これらの列の順序を変更したい場合は、レイアウトで正しい順序に並べるだけです。

    <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>
于 2016-07-24T18:24:26.767 に答える