2016-11-03 6 views
1

画面の向きが変わったときに私の意見をonConfigurationChangeに並べ替えたい。アクティビティの再起動とビューの再作成は多すぎます。だから私は意見を守らなければならない。Android:向き変更の幅と高さを交換する

LinearLayoutが1つあります。向きを変更したいです。方向が変更された場合は、すべての子要素の幅と高さの値を入れ替える必要があります。 (私の場合は、0dpwrap_contentおよびmatch_parentです。

もちろん、私は古い方向を保ち、子供の幅と高さを交換することができます。しかし、この作業は本質的であり、私にとってユニークではないように見えます。そう簡単な方法はありますか?すでにどこかで実装されているのでしょうか?

答えて

2

これは実装されていますが、アクティビティの再起動時のみです。

反復を伴わない方法の1つは、本質的にAndroidシステムが行うと思われるランドスケープレイアウトでビューを再作成することです。ただし、あなたの活動の残りの部分を再作成する必要はありません。欠点は、ビュー(onClickListener、onItemClickListenerなど)に適用したすべてのリスナーのバインドを解除する必要があることです。そうしないとメモリリークが発生します。

しかし、これを行う簡単な方法があります。レイアウトを、ビューを制御するだけの単一のフラグメントスタイルとして扱います。すべてのクリックとユーザーのやりとりは、アクションをアクティビティに戻すこのフラグメントによって処理されます。 onConfigurationChangeが呼び出された場合は、このフラグメントをFragmentManagerから削除してから、新しいFragmentを追加してください。

関連する問題