阻止GridView滚动onConfigurationChanged

时间:2013-09-04 08:28:10

标签: 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.computeScroll();
    }

我希望如果GridView处于中途,它将仅从那里开始,但随着配置的改变,它将从顶部重新开始。

2 个答案:

答案 0 :(得分:0)

在清单文件中添加一行

无需覆盖onConfigChanges()方法

<activity
            android:name="yourActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
 />

答案 1 :(得分:0)

取一个标志并将其设置为false覆盖方法名称onConfigurationChanged并在此方法中设置标志为true并检查flag是否为true然后禁用滚动然后再次将其伪造 你也需要在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);
        }

for menifest执行以下操作

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;
    }

});
}