Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.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 在自定义视图中处理方向更改的问题_Android_View_Orientation - Fatal编程技术网

Android 在自定义视图中处理方向更改的问题

Android 在自定义视图中处理方向更改的问题,android,view,orientation,Android,View,Orientation,我编写了一个扩展LinearLayout的自定义视图。它包含两个视图,一个标题和一个主体。自定义视图保持展开状态,在单击标题视图时打开和关闭。展开时,主体可见,未展开时,主体消失。我希望在设备方向更改时保留此视图的展开状态,因此我编写了onSaveInstanceState和onRestoreInstanceState以保存展开标志 一个问题是,如果我在展开这些视图时重新定向设备,那么整个活动都会重新绘制,而不会更改视图的方向。如果我从portait切换到横向,屏幕将保持纵向。如果未展开任何自定

我编写了一个扩展LinearLayout的自定义视图。它包含两个视图,一个标题和一个主体。自定义视图保持展开状态,在单击标题视图时打开和关闭。展开时,主体可见,未展开时,主体消失。我希望在设备方向更改时保留此视图的展开状态,因此我编写了onSaveInstanceState和onRestoreInstanceState以保存展开标志

一个问题是,如果我在展开这些视图时重新定向设备,那么整个活动都会重新绘制,而不会更改视图的方向。如果我从portait切换到横向,屏幕将保持纵向。如果未展开任何自定义视图,则活动的视图树将正确重新定向

以下是我对视图的onRestoreInstanceState的逻辑:

protected void onRestoreInstanceState(Parcelable state) {
    SavedState ss = (SavedState) state;
    super.onRestoreInstanceState(ss.getSuperState());
    if (ss.expanded != mHeader.isExpanded()) {
        mHeader.toggleExpanded();
    }
    mBody.setVisibility(ss.expanded ? VISIBLE : GONE);
}
我做错了什么