Android TableLayout比屏幕宽度宽

时间:2016-01-27 20:04:49

标签: android xml tablelayout

我是创建Android应用程序的初学者,所以如果我的问题是愚蠢的话,请善待......

我想创建一个以结构方式显示某些数据的表格,但我的问题是,我有七列而且它们不适合屏幕。因此,最后一个coloumn在它开始时被削减,这不仅看起来很糟糕,这对我来说也是一个问题,因为重要的是,这个coloumn也会显示出来。

让你更好地了解我的意思:

我收到了这段代码:

<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

但是我也需要屏幕内的最后一个coloumn(你可以看到这个coloumn的“V”的一部分) 我知道有一些不可能的事情,比如有很多文字,这就是为什么它不可能,但在这种情况下,我希望文本将缩短为“...”就像你在screentshot中看到的那样(Stunde - &gt; Stun ......)。

所以最后:我怎么能把整个表格(我不在乎它是否已经塞满),在整个屏幕宽度?

请注意:我不是编程方面的新手,我相信Java,php,JS,C#等。我在设计方面做得不好而且不确定使用Android API。

1 个答案:

答案 0 :(得分:0)

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