Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 具有等间距控件的动态GridLayout_Android_Android Gridlayout - Fatal编程技术网

Android 具有等间距控件的动态GridLayout

Android 具有等间距控件的动态GridLayout,android,android-gridlayout,Android,Android Gridlayout,我们需要在网格中放置任意控件,以支持colspan(也可能是沿着道路rowspan更远的地方)。所以我在看,因为它似乎只是支持这一点。我已经建立了一个简单的示例,只在一些单元格中放置文本视图 我的XML如下所示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_wid

我们需要在网格中放置任意控件,以支持colspan(也可能是沿着道路rowspan更远的地方)。所以我在看,因为它似乎只是支持这一点。我已经建立了一个简单的示例,只在一些单元格中放置文本视图

我的XML如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#cccccc"
    android:orientation="horizontal"
    android:weightSum="1"
    android:id="@+id/root">
    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="wrap_content"
        android:background="@android:color/holo_green_dark" android:layout_weight="1">
        <TextView android:text="Erstes" android:layout_row="0" android:layout_column="0" android:layout_columnSpan="2" android:layout_columnWeight="1"  android:background="#333333" />
        <TextView android:text="Zweites" android:layout_row="1" android:layout_column="2" android:layout_columnWeight="1"  android:background="#666666" />
        <TextView android:text="Drittes" android:layout_row="1" android:layout_column="1" android:layout_columnWeight="1"  android:background="#888888"/>
        <TextView android:text="Viertes" android:layout_row="2" android:layout_column="3" android:layout_columnWeight="1"  android:background="#aaaaaa" />
        <Space android:layout_row="1" android:layout_column="0" android:layout_width="10dp" android:layout_columnWeight="1" android:layout_gravity="fill_horizontal" />
    </GridLayout>
</LinearLayout>

必须在
空间中放置固定宽度的
,以避免第二行的第一个单元格折叠。我的第一个问题是,是否有其他方法可以做到这一点?因为我想避免设置任何内容的宽度,因为每个单元格的列数和相应位置事先并不知道。(编辑:我想你可以忽略其中的
android:layout\u gravity=“fill\u horizontal”
部分。那只是我在尝试而已。)

同样,使用XML(或者在代码中使用相同的方法),最终结果中的列间距不均。看起来,包含内容(文本)更宽的单元格的列总体上有更多的空间。我怎样才能避免这种情况

你可以在下面的图片上看到结果,尽管乍一看可能不太明显。对于仅包含10dp宽<代码>空间视图的单元格而言,最为明显。


我对GridLayout期望太高了吗?谢谢你的帮助

对于第一个问题,最明显的答案可能是在缺少控件的位置添加
空格
视图,并将所有视图设置为具有相等的权重

对于第二个问题,最好将
layout\u width
设置为0dp,因为默认情况下它们被设置为wrap\u内容

忽略以下内容,因为您已经在使用API21

支持库具有更好的功能。它允许您为每个视图指定权重,这意味着您可以通过使每个视图的权重相等来均匀分布空间

更具体地说,将
compile“com.android.support:gridlayout-v7:${support\u LIBRARY}”
添加到Gradle依赖项列表中,其中${support\u LIBRARY}是可用的最新版本


并使用
android.support.v7.widget.GridLayout
标记进行布局。

刚刚注意到您引用的是平台GridLayout,我认为它不支持权重。它支持权重,因为API级别为21。对于内容看起来更宽的单元格,您可能需要添加
android:layou width=“0dp”
。这是因为我认为布局的宽度默认为
wrap\u content
。编辑:刚刚试过,效果不错。是的,我在代码中使用过这个。在XML中更改为使用常规GridLayout进行比较。当我在一个棉花糖设备上测试时,我对重量的支持和普通的一样。不过还是要谢谢你!你是我个人的英雄!将
layout\u width
设置为0dp成功了!我知道违约,但不知道其影响。非常感谢!非常感谢!:)很高兴听到它对你有用。