如何在Android的GridLayout中控制视图包装?

时间:2017-05-28 21:56:22

标签: android android-layout xamarin.android

我想知道为什么在纵向模式下,这个android xml没有正确呈现:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="20dp"
    android:orientation="horizontal"
    android:columnCount="5">
    <Switch
        android:id="@+id/Switch1"
        android:layout_column="0"
        android:layout_columnSpan="5"
        android:layout_row="0"
        android:text="Use only WiFi when sending data?"
        android:layout_marginBottom="10dp"
        android:layout_columnWeight="5"
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content" />
    <TextView
        android:id="@+id/TextView1"
        android:layout_column="0"
        android:layout_columnSpan="2"
        android:layout_row="1"
        android:padding="5dp"
        android:text="Вкупно собрани податоци: "
        android:layout_columnWeight="2"
        android:maxHeight="60dp"
        android:layout_gravity="fill_horizontal"
        android:scrollHorizontally="false"
        android:layout_width="wrap_content"
         />
    <TextView
        android:id="@+id/TextView2"
        android:layout_column="2"
        android:layout_row="1"
        android:padding="5dp"
        android:text="Empty Space 1"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content" />
    <TextView
        android:id="@+id/TextView3"
        android:layout_column="3"
        android:layout_row="1"
        android:padding="5dp"
        android:text="Empty Space 1"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content" />
    <TextView
        android:id="@+id/TextView4"
        android:layout_column="4"
        android:layout_row="1"
        android:padding="5dp"
        android:text="Empty Space 1"
        android:layout_columnWeight="1"
        android:layout_gravity="fill_horizontal"
        android:layout_width="wrap_content" />
</GridLayout>

它应该是这样的:

|--1--|--2--|--3--|--4--|--5--|
|      fills all columns      |
|-----------|-----|-----|-----|
|     2     |  1  |  1  |  1  |
|-----------|-----|-----|-----|

我觉得奇怪的是,这在横向模式下运行良好,直到我在Switch或Text Views中插入更多文本,所以问题可能是因为内容没有包装,但正如你所看到的,我试图设置{ {1}}到`wrap_content',它仍然不起作用......所以缺少什么......?

*顺便说一句,我使用Xamarin,但我不相信这是Xamarin的设计师问题,因为在运行时我得到的设计与我在设计师中看到的相同......

1 个答案:

答案 0 :(得分:0)

我认为问题是第一个TextView的文字太长了。如果希望文本在内容长度增加时换行,通常我们可以将视图宽度指定为0dp(android:layout_width="0dp"),这样网格布局就会动态计算宽度。

我发现android:layout_columnWeight="5"的{​​{1}}会影响第二行Switch的布局。改变你的代码如下,它在我身边起作用:

TextView