我试图在用户点击某个项目后显示一个列表项。但是,我注意到当文本太多时布局搞砸了。有时它被推到一半,有时它完全在屏幕的右侧。我不明白为什么会这样。我该如何解决这个问题?请注意,我在弹出式对话框中具有完全相同的布局,没有任何问题。
这是我的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>
以下是一些屏幕截图,向您展示我的意思:
应该是什么:
不应该是什么:
推到屏幕右侧
说明中的文字过多。离开屏幕
只推了一半。
答案 0 :(得分:2)
TableLayout
中列的大小由其最大内容给出。
您的布局方式,标题 nameDetails 位于第一列中。
您会注意到,在您不喜欢的情况下,第二列与标题的末尾整齐对齐。
要解决此问题,请将标题移出表格布局,或使用android:layout_span
属性将其跨越2列
答案 1 :(得分:1)
我相信这种情况正在发生,因为您将标题@+id/nameDetails
作为表格的第一行。当它确定表左侧的大小时,它包括此<textview>
单元格的长度。
您可以将该textview移出tableview吗?