从底部开始的Android gridview堆栈

时间:2017-10-06 18:25:05

标签: android gridview

我正在尝试创建一个由15x20文本视图组成的网格视图,我希望从下到上填充文本视图。例如getChildAt(0)将引用左下角的网格。现在它始终引用左上角网格。 我试过了

android:stackFromBottom="true"

但它不起作用。下面是我的代码,希望有人可以提供一些见解我做错了什么。谢谢!

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/sample_main_layout">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="313dp"
    android:layout_weight="0.18">

    <GridLayout
        android:id="@+id/map_grid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentTop="true"
        android:layout_alignParentBottom="true"
        android:layout_alignParentStart="true"
        android:columnCount="15"
        android:descendantFocusability="afterDescendants"
        android:gravity="center"
        android:horizontalSpacing="30dp"
        android:paddingLeft="20dp"
        android:rowCount="20"
        android:stackFromBottom="true"
        android:stretchMode="columnWidth"
        android:verticalSpacing="30dp">

    </GridLayout>

使用你们建议的一些解决方案,我创建了一个能够纠正网格索引的函数。它将从最后一个位置引用网格。

编辑:

   public int correctIndex(int index) {
    int mul = (int) Math.floor(index /15);
    int remainder = index%15;
    remainder = 15-remainder;
    int correctedIndex = 300-(mul*15+remainder);
    return correctedIndex;
   }

4 个答案:

答案 0 :(得分:1)

android:stackFromBottom="true"并不代表您的商品将按相反的顺序排列。

这只是意味着如果由于项目较少而存在额外的差距,则空间将留在顶部。

要以相反的顺序放置项目,您需要使用覆盖getItem(int position)方法以GridView的适配器中的相反顺序返回项目。

答案 1 :(得分:1)

您无需以相反的顺序填写GridView。您只需按相反顺序阅读即可。

而不是:

gridView.getChildAt(position);

使用:

gridView.getChildAt(gridView.getChildCount() - position);

当然,您应该替换您正在使用的变量

答案 2 :(得分:1)

要使android:stackFromBottom="true"工作,您必须使用<GridView>代替<GridLayout>

答案 3 :(得分:1)

我可能错了,但如果你在网格视图中为数据加载类似数组的东西,那么你可以在加载之前反转数组,或者执行上面的@ W0rmH0lesaid