如何在同一可见项目中更改 gridview 的列数。 Android
How to change number of column of a gridview at same visible item. Android
我正在编写一个 android 应用程序,我在其中使用网格视图来显示一些项目。我想为用户提供一个可配置的视图,他们可以通过单击浮动操作按钮来更改 activity 上的列数。我正在更改列 no using
gridView.setNumColumns(selectedColumnNo);
这工作正常但问题是如果用户在滚动后更改列数,第一个可见位置设置为数组列表的第一项,因此用户必须再次滚动视图。有人可以告诉我我哪里做错了吗?或者这是执行此操作的正确方法还是我应该使用其他方法。
代码片段会有所帮助
谢谢。
更新::
目前我正在使用下面的片段
findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int firstPosition = gv.getFirstVisiblePosition();
if(gv.getNumColumns()==2)
{
gv.setNumColumns(1);
gv.setSelection(firstPosition);
}
else {
gv.setNumColumns(2);
gv.setSelection(firstPosition);
}
}
});
现在的问题是每 4 次切换网格视图显示 arraylist 的第一个元素
就在调用 setNumColumns()
之前,保存 GridView 的第一个可见位置:
int firstPosition = gridView.getFirstVisiblePosition();
然后,在更改列数后,将该整数传递给 setSelection()
:
gridView.setSelection(firstPosition);
"Selection",与直觉相反,与 "activation" 不同。它将确保视图在屏幕上,但不会以任何其他方式明显影响它。
我正在编写一个 android 应用程序,我在其中使用网格视图来显示一些项目。我想为用户提供一个可配置的视图,他们可以通过单击浮动操作按钮来更改 activity 上的列数。我正在更改列 no using
gridView.setNumColumns(selectedColumnNo);
这工作正常但问题是如果用户在滚动后更改列数,第一个可见位置设置为数组列表的第一项,因此用户必须再次滚动视图。有人可以告诉我我哪里做错了吗?或者这是执行此操作的正确方法还是我应该使用其他方法。
代码片段会有所帮助 谢谢。 更新:: 目前我正在使用下面的片段
findViewById(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int firstPosition = gv.getFirstVisiblePosition();
if(gv.getNumColumns()==2)
{
gv.setNumColumns(1);
gv.setSelection(firstPosition);
}
else {
gv.setNumColumns(2);
gv.setSelection(firstPosition);
}
}
});
现在的问题是每 4 次切换网格视图显示 arraylist 的第一个元素
就在调用 setNumColumns()
之前,保存 GridView 的第一个可见位置:
int firstPosition = gridView.getFirstVisiblePosition();
然后,在更改列数后,将该整数传递给 setSelection()
:
gridView.setSelection(firstPosition);
"Selection",与直觉相反,与 "activation" 不同。它将确保视图在屏幕上,但不会以任何其他方式明显影响它。