4

BringChildToFront の反対を行うメソッドはありますか。子供を送り返したい。どうやってやるの?

4

3 に答える 3

3

ネイティブ Android API にはそのようなメソッドはありません。ただし、自分で実装できます。例を次に示します。

public void moveChildToBack(View child) {
    int index = indexOfChild(child);
    if (index > 0) {
        detachViewFromParent(index);
        attachViewToParent(child, 0, child.getLayoutParams());
    }
}

このメソッドは、保護されたメソッドを使用するため、 android.view.ViewGroupクラスのサブクラスでのみ機能します。

主なアイデアは、子ビューを子リストの最初の場所に移動することです。これは、ViewGroup が子の自然な順序を使用して描画するためです。つまり、リストの最初のビューの Z オーダーが最も低く、最後のビューの Z オーダーが最も高くなります。注文。

于 2012-08-27T12:49:01.317 に答える
0

以下のコードを試してください:

private void moveToBack(View currentView) {
    ViewGroup vg = ((ViewGroup) currentView.getParent());
    for(int i=0;i<vg.getChildCount();i++){
        View v=vg.getChildAt(i);
        if(!v.equals(currentView))
        {
            vg.bringChildToFront(v);
            break;
        }
    }
}

アイデアは、別の子供を前に出すことです。極端に戻す必要がある場合は、「break;」を削除してください。

于 2012-08-27T12:50:13.820 に答える