2016-05-15 52 views
1

例如,這裏是LinearLayout中的6個子視圖。如何在不改變視圖索引的情況下將視圖放在LinearLayout的頂部?

  • 的LinearLayout
    • View0
    • 視圖1
    • 視圖2
    • VIEW3
    • View4
    • View5

在某些情況下,我想讓View0位於其他視圖的頂部,也就是說,View0不能與其他視圖重疊。

有方法bringToFrontbringChildToFront,他們將View0的指數更改爲:

  • 的LinearLayout
    • 視圖1
    • 視圖2
    • 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作品,謝謝! –

相關問題