[Android] どのようにすべての前にビューを持って来る?


Answers

私は良い答えを見つけるためにスタックのオーバーフローを見てきました。そして、私が見つけられなかったとき、私はドキュメントを見て行きました。

誰もこの簡単な答えをまだ見つけていないようだ。

ViewCompat.setTranslationZ(view, translationZ);

デフォルトの翻訳zは0.0です。

Question

私はアクティビティとたくさんのウィジェットを持っており、その中にはアニメーションがあり、アニメーションのためにウィジェットの一部が別のウィジェットを移動(翻訳)しています。 たとえば、テキストビューはいくつかのボタン上を移動しています。 。 。

今は、ボタンを常に前面にしたいと思っています。 そして、テキストビューが動いている時、私はボタンの後ろを移動したい。

私はこれを達成することができません私は知っているすべてを試して、 "bringToFront()" definitellyは動作しません。

レイアウトの要素を配置する順番でzオーダーを制御したくないのですが、レイアウトは複雑でレイアウトの要求にすべてのボタンを配置することはできません







FrameLayout試してFrameLayout 、ビューを上下に配置することができます。 背景ビューとフォアグラウンドビューの2つのLinearLayoutsを作成し、 FrameLayoutを使用して組み合わせることがFrameLayoutます。 お役に立てれば。




その日を救う別の方法があります。 必要なレイアウトのダイアログを新規作成して表示するだけです。 DialogFragmentを介してloadingViewを表示する必要があり、これが成功する唯一の方法でした。

Dialog topDialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar);
topDialog.setContentView(R.layout.dialog_top);
topDialog.show();

bringToFront()は、私のようないくつかのケースでは動作しないかもしれません。 しかし、dialog_topレイアウトの内容は、UIレイヤー上のものをオーバーライドする必要があります。 しかし、とにかく、これは醜い回避策です。




LinearLayoutを使用している場合は、 LinearLayout myView.bringToFront()を呼び出し、 parentView.requestLayout()およびparentView.invalidate()を呼び出して、親が新しい子オーダーで再描画するようにする必要があります。






Links