是否有一個方法與bringChildToFront相反。我想把孩子送回來。我怎樣才能做到這一點?android對面的bringChildToFront
4
A
回答
2
原生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次序。
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」。
相關問題
- 1. 使用bringChildToFront設置z的視圖順序
- 2. Android Window.FEATURE_NO_TITLE的對面嗎?
- 3. android - 桌面佈局對齊
- 4. android面向對象編程
- 5. 面對問題與Android WebView
- 6. android中的面向對象的方法
- 7. Android listview裏面的相對佈局
- 8. 新的Android面對API限制
- 9. 在android中面對android.view.InflateException的問題
- 10. Android - ListView裏面的對話框
- 11. Android的面向對象設計基礎
- 12. Android的對話碰撞正面點擊
- 13. 面對問題在Android上使用smack
- 14. 設置GUI對象切換頁面[android]
- 15. Android錯誤dialogfragment與烤麪包對話界面
- 16. getJSON()的對面?
- 17. 對面的MySQL
- 18. MimeMapping.GetMimeMapping的對面?
- 19. putchar()的對面?
- 20. lastUnique()的對面
- 21. bringSubviewToFront的對面?
- 22. 對面.find的()
- 23. AJAX的對面
- 24. CGPathCreateCopyByStrokingPath的對面?
- 25. array_chunk的對面
- 26. MySQL的對面
- 27. 「Abstractor」的對面
- 28. BouncyCastle的,不同的行爲對桌面/ Android的簽名
- 29. Android的表面紋理,對球的視頻,OpenGL ES 2.0的
- 30. Android對話框界面獲取內部對話框視圖
這是非常「沉重」的解決方案,它使用大量不必要的操作與列表孩子。 – HitOdessit
我不這麼認爲。它只是把另一個孩子帶到前面。你知道findViewById是如何工作的嗎?它也正在做這種循環我猜。在您的分離和附加方法中,android系統正在運行循環以查找分離視圖,然後再次附加視圖 –
爲了實際移動某個孩子(我的意思是給它最低的Z順序),您需要從代碼中刪除「break」,在這種情況下,代碼變得非常「沉重」 - 它會爲列表中的每個其他視圖調用bringChildToFront()。 我建議最簡單的解決方案 - 只需要1次操作,將我們的視圖移到列表的開頭。 – HitOdessit