如何在没有标题行的情况下滚动行?

时间:2018-04-22 16:15:32

标签: android android-layout android-fragments android-tablelayout

我的活动有这个xml文件:

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

    <Spinner
        android:id="@+id/spinner_strassenfuehrer_fb_screen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TableLayout
        android:id="@+id/tablelayout_strassenfuehrer_fb_screen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp" >

        <TableRow
            android:scrollbars="vertical"
            android:background="#A6A6A6"
            android:padding="5dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Störcode" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Bezeichnung" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Letztes Auftreten" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Anlagen ID" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Projekt" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Benötigte Ersatzteile" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Benötigtes Werkzeug" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAllCaps="false"
                android:layout_weight="1"
                android:text="Handlungsleitfaden" />

        </TableRow>
    </TableLayout>

我的代码是:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fehlerdatenbank_strassenfuehrer_screen);

    //read database and put values dynamically into table
    tableLayout = (TableLayout) findViewById(R.id.tablelayout_strassenfuehrer_fb_screen);
    for (int i = 0; i < 100; i++) {

        TableRow row = new TableRow(this);
        row.canScrollVertically(1);

        //column 1
        TextView tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        //column 2
        tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        //column 3
        tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        //column 4
        tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        //column 5
        tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        //column 6
        tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        //column 7
        tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        //column 8
        tv = new TextView(this);
        tv.setText("TEST");
        row.addView(tv);

        tableLayout.addView(row, i + 1);
    }
}

我是android的新手,我想让行可滚动,但不是&#34;首先&#34;行,来自我的xml-layout。

另外,我想适应我动态放入TableLayout的元素,因为元素不适合列。

我是Android的新手,如果有人可以帮助我,我会很开心:)

谢谢

1 个答案:

答案 0 :(得分:0)

虽然这不是一个好的解决方案,但我建议保留两个单独的TableLayout。一个用于标题,另一个用于滚动。所以最终的布局将如下所示。

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

    <Spinner
        android:id="@+id/spinner_strassenfuehrer_fb_screen"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TableLayout
        android:id="@+id/header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp">

        <TableRow
            android:background="#A6A6A6"
            android:padding="5dp"
            android:scrollbars="vertical">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Störcode"
                android:textAllCaps="false" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Bezeichnung"
                android:textAllCaps="false" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Letztes Auftreten"
                android:textAllCaps="false" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Anlagen ID"
                android:textAllCaps="false" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Projekt"
                android:textAllCaps="false" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Benötigte Ersatzteile"
                android:textAllCaps="false" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Benötigtes Werkzeug"
                android:textAllCaps="false" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Handlungsleitfaden"
                android:textAllCaps="false" />

        </TableRow>
    </TableLayout>

    <TableLayout
        android:id="@+id/tablelayout_strassenfuehrer_fb_screen"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginTop="10dp" />
</LinearLayout>

只需按标识header获取标题,然后首先填充标题。然后,您将视图添加到第二个TabLayout。我希望你明白这个主意。

但是,我强烈建议您使用GridViewRecyclerView with GridLayoutManager来实现此功能。

更新

这只是一个示例代码。我想这些代码不起作用。我只是提出一个样本给你一个想法。

tableLayout = (TableLayout) findViewById(R.id.tablelayout_strassenfuehrer_fb_screen);

tableLayoutHeader = (TableLayout) findViewById(R.id.header);

for (int i = 0; i < 100; i++) {

    TableRow row = new TableRow(this);
    row.canScrollVertically(1);

    //column 1
    TextView tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    //column 2
    tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    //column 3
    tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    //column 4
    tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    //column 5
    tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    //column 6
    tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    //column 7
    tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    //column 8
    tv = new TextView(this);
    tv.setText("TEST");
    row.addView(tv);

    if(i == 0) tableLayoutHeader.addView(row, i + 1);
    else tableLayout.addView(row, i + 1);
}