Android 具有等间距控件的动态GridLayout
我们需要在网格中放置任意控件,以支持colspan(也可能是沿着道路rowspan更远的地方)。所以我在看,因为它似乎只是支持这一点。我已经建立了一个简单的示例,只在一些单元格中放置文本视图 我的XML如下所示: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
<?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成功了!我知道违约,但不知道其影响。非常感谢!非常感谢!:)很高兴听到它对你有用。