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

时间:2011-01-04 02:27:54

标签: android view orientation

我编写了一个扩展LinearLayout的自定义视图。它包含两个视图,“标题”和“正文”。自定义视图保持“扩展”状态,只要单击标题视图,该状态就会切换为打开和关闭。当扩展时,身体是可见的,当不扩展时,身体是GONE。我希望在设备方向改变时保留此视图的展开状态,因此我编写了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);
}

我做错了什么?

0 个答案:

没有答案