1

我试图在用户单击一个项目后显示一个列表项。但是,我注意到当文本过多时布局混乱。有时它被推到一半,有时它完全推到屏幕的右侧。我不明白为什么会这样。我该如何解决这个问题?请注意,我在弹出对话框中的布局完全相同,没有问题。

这是我的 XML 代码:

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

    <TableLayout
        android:id="@+id/add_spot_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:shrinkColumns="1"
        android:stretchColumns="1" >

        <TableRow
            android:layout_marginBottom="1sp"
            android:layout_marginTop="2sp" >

            <TextView
                android:id="@+id/nameDetails"
                android:layout_width="fill_parent"
                android:textSize="25sp"
                android:textStyle="bold" />
        </TableRow>

        <!-- separator -->

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray" />

        <TableRow
            android:layout_marginBottom="2sp"
            android:layout_marginTop="2sp" >

            <TextView
                android:layout_marginLeft="5sp"
                android:text="@string/distance"
                 />

            <TextView android:id="@+id/distanceDetails" />
        </TableRow>

        <TableRow
            android:layout_marginBottom="2sp"
            android:layout_marginTop="2sp" >

            <TextView
                android:layout_marginLeft="5sp"
                android:text="@string/address"
                 />

            <TextView android:id="@+id/addrDetails" />
        </TableRow>

        <TableRow
            android:layout_marginBottom="2sp"
            android:layout_marginTop="2sp" >

            <TextView
                android:layout_marginLeft="5sp"
                android:text="@string/type"
               />

            <TextView android:id="@+id/typeDetails" />
        </TableRow>

        <TableRow
            android:layout_marginBottom="2sp"
            android:layout_marginTop="2sp" >

            <TextView
                android:layout_marginLeft="5sp"
                android:text="@string/terrain" />

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

                <RatingBar
                    android:id="@+id/terrainDetails"
                    style="?android:attr/ratingBarStyleSmall"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:isIndicator="true"
                    android:max="5"
                    android:numStars="5"
                    android:stepSize="1" />
            </RelativeLayout>
        </TableRow>

        <TableRow>

            <TextView
                android:layout_marginLeft="5sp"
                android:text="@string/difficulty" />

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

                <RatingBar
                    android:id="@+id/difficultyDetails"
                    style="?android:attr/ratingBarStyleSmall"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:isIndicator="true"
                    android:max="5"
                    android:numStars="5"
                    android:stepSize="0.1" />
            </RelativeLayout>
        </TableRow>

        <TableRow
            android:layout_marginBottom="2sp"
            android:layout_marginTop="2sp" >

            <TextView
                android:layout_marginLeft="5sp"
                android:text="@string/description" />

            <TextView
                android:id="@+id/descDetails"
                android:gravity="top"
                android:lines="2"
                android:maxLines="2"
                android:scrollHorizontally="false" />
        </TableRow>

        <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray" />
    </TableLayout>

</ScrollView>

以下是一些屏幕截图,向您展示我的意思:

它应该是什么:

在此处输入图像描述

它不应该是什么:

推到屏幕右侧

在此处输入图像描述

说明文字过多。离开屏幕

在此处输入图像描述

只推了一半。

在此处输入图像描述

4

2 回答 2

2

a 中列的大小TableLayout由其最大内容给出。

您组织布局的方式,标题nameDetails第一列中。
您会注意到,在您不喜欢的情况下,第二列与标题的末尾整齐对齐。

要解决此问题,请将标题移出表格布局,或使用android:layout_span属性将其跨越 2 列

于 2013-03-16T01:26:03.337 回答
1

我相信这是因为您的标题@+id/nameDetails是表格的第一行。<textview>当它确定表格左侧的大小时,它包括该单元格的长度。

你能把那个textview移出tableview吗?

于 2013-03-16T01:14:51.443 回答