2016-05-15 1 views
1

たとえば、LinearLayoutの6つの子ビューがあります。Viewのインデックスを変更せずに、どのようにViewをLinearLayoutの上に持ってくることができますか?

  • のLinearLayout
    • View0
    • View1を
    • VIEW2
    • View3
    • View4
    • View5

場合によっては、他のビューの上にView0を作成したい、つまりView0を他のビューと重複させることはできません。

方法bringToFrontbringChildToFrontがありますが、彼らはView0のインデックスに変更されます。

  • をのLinearLayout は
    • View1を
    • VIEW2
    • View3
    • View4
    • View5
    • View0

私は、しかし、それは動作しません、ViewCompat.setTranslationZ方法を試してみました。

View0のインデックスを変更せずに他のビューの上にView0を作成するにはどうすればよいですか?

+0

あなたがソースを見れば、あなたはViewCompat方法は、実際に古いSDKレベルで何もしないことがわかります。 – AutonomousApps

+0

@AutonomousAppsええ、私はそれに気づくべきです。 –

答えて

0

View0のレイアウトの重力をGravity.TOPに設定してみてください。

+0

は動作しません... –

1

LinearLayoutをサブクラス化し、setChildDrawingOrderEnabled(true)を使用し、最後にアイテムのインデックスを返すためにgetChildDrawingOrder()を上書きする必要があります。

だからあなたの例では、あなたはgetChildDrawingOrder(int childCount, int i)で次のように返します:

return (childCount + (i-1)) % childCount; 
+0

'use setChildDrawingOrderEnabled(true)'私はこのメソッドが 'setChildrenDrawingOrderEnabled'であるべきだと思いますが、まだ動作しません。 –

+0

' return childCount - i - 1; '、I作品、ありがとう! –

関連する問題