0

這似乎是一個非常簡單的問題,但我似乎無法弄清楚。在ActionBar之上的Android LinearLayout?

當按下按鈕時,我將添加一個LinearLayout到我的活動Activity,但我希望此佈局位於整個活動的頂部,其中包括ActionBar。我希望佈局能夠像Dialog一樣工作,但我認爲Dialog對於我所要做的事情來說太重了,所以我想使用佈局。

我嘗試應用FlagsType當我設置佈局的WindowManagerLayoutParams但沒有什麼幫助。

這是我的嘗試:

WindowManagerLayoutParams mainLayoutParams = new WindowManagerLayoutParams(); 
mainLayoutParams.Height = 600; 
mainLayoutParams.Width = 300; 
mainLayoutParams.Gravity = GravityFlags.Center; 
mainLayoutParams.Flags = WindowManagerFlags._______ 
mainLayoutParams.Type = WindowManagerTypes._______ 

我寫了「______」,因爲我已經嘗試了所有不同的人,但它沒有什麼區別。

請給我解決方案,我可以做到這一點編程(而不是XML),因爲我的佈局是手動創建。

我該怎麼做?

謝謝你的時間。

+0

當你說「上面」,你的意思是在Z軸(海拔較高,更「接近」理論上用戶的眼睛),或在Y軸(向屏幕的頂部邊緣更近)? – CommonsWare

+0

我相信Z軸。我希望佈局佔據屏幕的85%,其餘部分覆蓋一層。所以基本上是一個標準的'Dialog'或'Alert'的樣子。我已更新我的問題以顯示我所嘗試的內容。 –

回答

2

Dialog不僅是一個特別「重」的解決方案,它是我能想到的最輕的解決方案。你的選擇是:

  • 重寫你的應用程序來使用你的佈局,而不是操作欄Toolbar,然後用RelativeLayoutFrameLayout容器周圍的Toolbar和主要內容。然後,您可以將您的浮動內容作爲孩子添加到容器中,之後在Z軸上出現RelativeLayoutFrameLayout的子代。但是,這會導致Android 5.0+與elevation出現問題,所以我不會推薦它。

  • 您可以讓您的浮動事物成爲以對話爲主題的活動(例如,Theme.Holo.Dialog)。當您開始活動時,它將看起來漂浮在現有活動上。

+0

我想我最好的選擇是用'Dialog'去。另一個問題是如何在對話框中調用'AnimationEnd'事件?我在res/anim文件夾中創建了XML文件,並將其應用於對話框:'myDialog = new Dialog(context,Resource.Style.myDialogAnim);' –

+0

@ user3866010:'Dialog'構造函數不需要動畫資源,我不知道你在做什麼。我建議你問一個單獨的Stack Overflow問題,你可以在其中解釋你正在嘗試完成的與對話和動畫相關的內容,希望有人能夠幫助你。 – CommonsWare

+0

'Dialog'構造函數不採用動畫資源,但確實需要樣式。我在res/values/styles文件中創建了一個樣式,其中包含一個項目「windowAnimationStyle」,該項目的值是另一個具有兩個項目「windowEnterAnimation」和「windowExitAnimation」的樣式。這會自動將動畫應用於對話框。但我會創建一個新問題。謝謝 –