我正在尝试创建一个由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;
}
答案 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