【问题标题】:How to set TableRow width to max in Android?如何在 Android 中将 TableRow 宽度设置为最大?
【发布时间】:2016-06-30 09:24:24
【问题描述】:

我在 .xml 文件中定义了一个表,但必须动态添加行和标题。我在水平和垂直方向上使用表格行填充宽度有问题。我已经尝试过stretchColumns 参数,但它没有帮助。最好的方法是什么?

            table = (TableLayout) findViewById(R.id.testList);

        TableRow headerRow  = new TableRow(this);

        JSONObject obj;

        obj = new JSONObject(loadJSONFromAsset());

        JSONArray records = obj.getJSONArray("tests");

        ArrayList<String> headers = new ArrayList<>();
        headers.add("Header 1");
        headers.add("Header 2");
        headers.add("Header 3");
        headers.add("Header 4");
        headers.add("Header 5");

        for(int i = 0; i < headers.size(); i++) {
            TextView header = new TextView(this);
            header.setText(headers.get(i));
            header.setTextColor(Color.WHITE);
            header.setBackgroundColor(Color.rgb(24, 116, 205));
            header.setPadding(15, 15, 15, 15);
            header.setTextSize(20);
            header.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

            header.setMaxLines(1);
            headerRow.addView(header);

        }

        table.addView(headerRow);

和xml

<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="wrap_content"
android:layout_width="wrap_content">


<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

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

        <HorizontalScrollView
            android:layout_height="wrap_content"
            android:layout_width="match_parent">

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

            </TableLayout>
        </HorizontalScrollView>
    </ScrollView>

</LinearLayout>

</GridLayout>

【问题讨论】:

  • 因为你的表格在滚动视图里面,它没有宽度和高度的限制。所以没有办法确定,哪个是max宽度。只能手动设置
  • @VladMatvienko 那么如何在没有滚动视图的情况下做到这一点?
  • 我没有说你需要在没有scrollView的情况下这样做。您需要决定哪个宽度是 max 适合您。是某个精确值,例如 100dp,还是屏幕宽度,还是什么?
  • @VladMatvienko 好的,但是如果我想填充所有屏幕宽度并且我有不同分辨率的设备怎么办?
  • 运行时可以获取屏幕宽度,运行时也可以设置视图宽度

标签: java android xml android-tablelayout tablerow


【解决方案1】:

试试这个方法。以下将确保TableRow 与可用宽度对齐。

在基础组件之后,将您的 TableLayout 放入 XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/mainLL"
    android:orientation="vertical">
<TableLayout
            android:id="@+id/tableLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
</LinearLayout>

现在在您的逻辑中,您可以根据响应的项目​​数添加。这应该在一个 for 循环中。

for(int i = 0; i < leftComponent.size(); i++) 
    {
            //Table Layout parameters
            TableRow.LayoutParams textViewParam = new TableRow.LayoutParams(TableRow.LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,1.0f);
            TableLayout tableLayout = (TableLayout) view.findViewById(R.id.fenceTableLayout);
            TableRow trHead = new TableRow(context);
            LayoutParams tableRowParams = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            trHead.setLayoutParams(tableRowParams);

            TextView nameHead = new TextView(context);
            nameHead.setText(leftComponent[i]);
            nameHead.setLayoutParams(textViewParam);
            nameHead.setGravity(Gravity.CENTER);
            trHead.addView(nameHead);

            TextView detailHead = new TextView(context);
            detailHead.setText(rightComponent[i]);
            detailHead.setGravity(Gravity.CENTER);
            detailHead.setLayoutParams(textViewParam);

            trHead.addView(detailHead);
            tableLayout.addView(trHead);

    }

您可能需要根据您的要求进行定制。

【讨论】:

  • 谢谢。 Java 代码将我从最后期限中拯救了出来 :)
猜你喜欢
  • 2016-09-04
  • 1970-01-01
  • 2018-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多