Android TableLayout 比屏幕宽度宽

Android TableLayout is wider than screen width

我是创建 android 应用程序的初学者,如果我的问题很愚蠢,请多多包涵...

我想制作一个 table 以结构化方式显示一些数据,但我的问题是,我有七列,但它们不适合屏幕。所以最后一栏一开始就剪掉了,这不仅不好看,对我来说也是个问题,因为重要的是,这一栏也要显示出来。

为了让您更好地了解我的意思:

我得到了这个代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="fill_parent"
android:layout_height="fill_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="*censored*"
android:background="@drawable/gardient_background">

<ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/scrollView"
    android:layout_alignParentBottom="true"
    android:layout_alignParentTop="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:scrollbars="none"
    android:overScrollMode="never"
    android:fillViewport="true">

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

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/representations_table"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:stretchColumns="6"
            android:orientation="vertical">

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

                <TextView
                    style="@style/TableHeaderRow"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:id="@+id/stage_header"
                    android:paddingLeft="5dp"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:width="25dp"
                    android:textSize="15dp"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/hour"
                    android:id="@+id/hour_header"
                    style="@style/TableHeaderRow"
                    android:paddingLeft="5dp"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:width="50dp"
                    android:textStyle="bold"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/subject"
                    android:id="@+id/subject_header"
                    android:paddingLeft="5dp"
                    style="@style/TableHeaderRow"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:width="40dp"
                    android:textStyle="bold"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/room"
                    android:id="@+id/room_header"
                    android:paddingLeft="5dp"
                    style="@style/TableHeaderRow"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:width="50dp"
                    android:textStyle="bold"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/teacher"
                    android:id="@+id/teacher_header"
                    android:paddingLeft="5dp"
                    style="@style/TableHeaderRow"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:width="50dp"
                    android:textStyle="bold"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/info"
                    android:id="@+id/info_header"
                    android:paddingLeft="5dp"
                    style="@style/TableHeaderRow"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:width="60dp"
                    android:textStyle="bold"
                    android:textSize="15dp" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/text"
                    android:id="@+id/text_header"
                    android:paddingLeft="5dp"
                    style="@style/TableHeaderRow"
                    android:ellipsize="end"
                    android:singleLine="true"
                    android:width="30dp"
                    android:textStyle="bold"
                    android:textSize="15dp" />

            </TableRow>

        </TableLayout>
    </LinearLayout>
</ScrollView>

但这给了我:

The Code Result

但我还需要屏幕内的最后一列(您可以看到该列的 "V" 的一部分) 我知道有一些不可能的事情,比如文本太多,这就是为什么它不可能,但在这种情况下,我希望文本将被缩短为“...”,就像你在屏幕截图中看到的那样(Stunde -> Stun...)。

所以最后:我怎样才能把整个 table(我不在乎它是否被塞满),进入整个屏幕宽度?

请注意:我不是编程新手,我确信 Java、php、JS、C# 等。我只是不擅长设计,不确定是否会使用 Android API.

您可以尝试为列分配权重,以便它们无论如何都会显示。其他选项是为 phone 和平板电脑设置不同的视图,即仅在 tablet/landscape 视图中显示所有列,并在纵向视图中以不同方式显示数据。