Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 防止GridView在onConfigurationChanged上滚动_Android_Scroll_Android Gridview_Android Scroll_Android Configchanges - Fatal编程技术网

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()
。我现在正在寻找解决办法。