相关疑难解决方法(0)

GridView行重叠:如何使行高适合最高的项目?

以前的人一样,我在GridView项目之间有不必要的重叠:

GridView项重叠

请注意除最右边的列之外的每个列中的文本.

我与前一个问题的不同之处在于我不想要一个恒定的行高.我希望行高可以变化以适应每行中最高的内容,以有效利用屏幕空间.

查看GridView源代码(不是权威副本,但kernel.org仍然是down),我们可以在fillDown()和makeRow()中看到最后一个View看到的是"引用视图":行的高度是从视图的高度,而不是最高的视图.这解释了为什么最右边的列没问题.不幸的是,GridView没有很好的设置让我通过继承来解决这个问题.所有相关领域和方法都是私人的.

所以,在我采取"克隆和拥有"这条破旧的臃肿路径之前,我在这里缺少一个技巧吗?我可以使用TableLayout,但这需要我自己实现numColumns="auto_fit"(因为我想在电话屏幕上只需要一个长列),它也不会是一个AdapterView,这应该是它应该是.

编辑:事实上,克隆和自己在这里不实用.GridView依赖于其父类和兄弟类的不可访问部分,并导致至少导入6000行代码(AbsListView,AdapterView等)

android android-layout android-gridview

43
推荐指数
1
解决办法
4万
查看次数

Android Gridview - 线性layout_height被忽略

根据GridView行高度这个问题的接受答案,如果你......

"将LinearLayouts设置为某个特定高度,行将全部为高度."

这似乎不适用于我的情况.我有一个每行的布局文件,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" 
    android:layout_width="wrap_content"
    android:layout_height="200dp"
    android:layout_gravity="center_horizontal">

    <ImageView 
        android:id="@+id/theimage"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal"
        android:background="#ffff0000" />

    <TextView 
        android:id="@+id/thename"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal"
        android:gravity="center"
        style="?icontext" 
        android:background="#ff00ff00"/>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

这些包含在Gridview中,定义如下:

<GridView android:id="@+id/gridview" 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:numColumns="auto_fit" 
        android:columnWidth="100dp"
        android:background="@color/background" 
        android:verticalSpacing="1dp"
        android:horizontalSpacing="5dp" />
Run Code Online (Sandbox Code Playgroud)

这忽略了'android:layout_height ="200dp"',而是将行高设置为单元格的内容.

更糟糕的是,当我的TextView包裹到第二行时,第二行被下一行单元格遮挡.

我错过了什么?

android android-layout

4
推荐指数
1
解决办法
2922
查看次数

标签 统计

android ×2

android-layout ×2

android-gridview ×1