67

ビューを後ろに送るのに問題があります。bringToFront()Android には、ビューを別のビューの上に配置するための のようなメソッドがあります。そのように、ビューを前の画像の下に置きたいと思います。

sendToBack()またはbringToBack()Androidのような方法はありますか。もしそうなら、誰でもこれで私を助けることができます。

注: アイテムをレイアウトに配置する順序で z オーダーを制御したくないので、z オーダーをプログラムで制御したいと考えています。

前面のビューを隠したくありません。移動中のビューの背後に配置したいだけです。

4

13 に答える 13

67

これは他の回答で暗示されていることを認識していますが、誰もコードを投稿していません。ビューを処理するための「ヘルパー」関数があるユーティリティ クラスに以下を保持します。

public static void sendViewToBack(final View child) {
    final ViewGroup parent = (ViewGroup)child.getParent();
    if (null != parent) {
        parent.removeView(child);
        parent.addView(child, 0);
    }
}
于 2013-11-09T05:43:42.847 に答える
42

方法はありませんsendToBack()。しかしbringToFront()、下に配置されたビューを呼び出すと、ほぼ同じ効果が得られます。

于 2012-02-16T13:37:14.857 に答える
36

これには組み込みのソリューションはありません。FrameLayout などで z オーダーを変更しようとしていると思います。

ただし、レイアウトに含まれる子要素の順序を変更できると思います。RemoveChild...() および addView() メソッドは位置の値を取ることができるため、子要素を交換する可能性が高く、それによって z オーダーが変更されます。ただし、少しハックなソリューションのようです。

または、子ビューの可視性プロパティを変更することを検討してください。同様の動作が発生する可能性があり、それははるかにクリーンだと思います。

編集:

新しい Android バージョンの L Developer Preview では、ビューの Z 順序を簡単に変更できるようになったようです。'Elevation' および 'TranslationZ' プロパティが助けになります: https://developer.android.com/preview/material/views-shadows.html

于 2011-07-20T09:19:42.100 に答える
19

bringToFront()前面に取得したいビューを呼び出してから、前面にinvalidate()表示したいビューを含むすべてのビューでメソッドを呼び出します。すべてのリスナーに対して同じことを繰り返します。

したがって、別のビューのリスナーが呼び出されると、前のビューは無効になり、バックグラウンドになります。

于 2012-02-21T13:14:31.597 に答える
9

ビューを背面に送信するために使用している方法は次のとおりです(bringToFrontの反対で、sendToBackのようなものです):

    private void moveToBack(View myCurrentView) 
    {
        ViewGroup myViewGroup = ((ViewGroup) myCurrentView.getParent());
        int index = myViewGroup.indexOfChild(myCurrentView);
        for(int i = 0; i<index; i++)
        {
            myViewGroup.bringChildToFront(myViewGroup.getChildAt(i));
        }
    }

お役に立てれば!

于 2013-06-29T00:45:02.683 に答える
2

view.setZ(float)API レベル 21 から使用できることに注意してください。詳細については、こちらを参照してください。

于 2015-10-23T15:08:37.447 に答える
1

ViewGroup.addViewInLayout()また、インデックスを取得するメソッドの機能を使用して、ビューがリストの最後または最初にあるかどうかを判断することもできます

于 2011-12-13T07:46:30.787 に答える
0

可視性を 0 に設定するか、その下のビューを前面に表示します。

于 2015-07-28T22:25:51.327 に答える
-5

view.setVisibility(View.INVISIBLE)またはを試すことができview.setVisibility(View.GONE)ます。

アップデート:

これは、やりたいことを達成する方法を示しています。

于 2011-07-20T20:33:25.707 に答える