安卓网格视图从底部堆叠

4

我正在尝试创建一个由15x20个TextView组成的表格视图(Gridview),并希望TextView从底部到顶部依次填充。例如,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个回答

3
你不需要倒序填充GridView,只需要按照倒序读取即可。
例如:
gridView.getChildAt(position);

使用:

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

当然,你应该用你正在使用的位置-1的变量进行替换。

谢谢!这个有效了!但是我需要添加一些计算才能实现反向操作! - JWH_

1

android:stackFromBottom="true"并不意味着您的项目将以相反的顺序放置。

它只是意味着如果由于较少的项目而产生额外的间隙,则在顶部留下空间。

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


1
为了使 android:stackFromBottom="true" 生效,您必须使用 <GridView> 而不是 <GridLayout>

1

我可能错了,但是如果您在网格视图中加载类似数组的数据,那么您可以在加载之前反转该数组,或者像@W0rmH0le上面所说的那样处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接