Android 防止GridView在onConfigurationChanged上滚动
当活动的配置更改时,我将应用此代码-Android 防止GridView在onConfigurationChanged上滚动,android,scroll,android-gridview,android-scroll,android-configchanges,Android,Scroll,Android Gridview,Android Scroll,Android Configchanges,当活动的配置更改时,我将应用此代码- public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); gridView.setNumColumns(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE ? 3:2); gridView.c
public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
gridView.setNumColumns(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE ? 3:2);
gridView.computeScroll();
}
我希望如果
GridView
处于中间位置,它将仅从那里开始,但随着配置的更改,它将从顶部重新开始。在清单文件中添加一行。
无需重写onConfigChanges()方法
获取一个标志并将其设置为false override method name onConfiguration Changed,然后在此方法中设置标志true并检查标志是否为true,然后禁用滚动,然后再次设置为false 您还需要在menifest中设置它 代码snipet正在跟踪
private boolean flag=false;
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
Log.d("ONCONFIGCHANGE", "CALLED" );
flag = true;
disableScroll();
super.onConfigurationChanged(newConfig);
}
android:configChanges="orientation"
对于menifest,请执行以下操作
private boolean flag=false;
@Override
public void onConfigurationChanged(Configuration newConfig) {
// TODO Auto-generated method stub
Log.d("ONCONFIGCHANGE", "CALLED" );
flag = true;
disableScroll();
super.onConfigurationChanged(newConfig);
}
android:configChanges="orientation"
在onconfigchange中,使用以下方法
private void disableScroll()
{
gridview.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_MOVE){
return true;
}
return false;
}
});
}
您的问题是(或现在是)使用重置滚动位置的gridView.setNumColumns()
。我现在正在寻找解决办法。