我正在编写一个Android应用程序,其中使用网格视图来显示一些项目。我想为用户提供一个可配置的视图,在其中他们可以通过单击浮动操作按钮来更改活动上的列数。我正在更改列不使用
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);
与直觉相反,“选择”与“激活”不同。这将确保视图显示在屏幕上,但不会以任何其他方式对其产生明显影响。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句