2013-07-24 101 views
7

Android的活動我想創建一個活動看起來像一個彈出窗口透明佈局

即與活動ALS透明背景我想以顯示它在卵石自定義位置,也就是說,在設備屏幕的右上角

我所做的就是內流行過的onCreate像activty

Display display = getWindow().getWindowManager().getDefaultDisplay(); 
    WindowManager.LayoutParams params = getWindow().getAttributes(); 
    // params.x = -20; 
    params.height = (display.getHeight())/2; 
    params.width = (display.getWidth())/2; 
    // params.y = -10; 
    params.gravity = Gravity.RIGHT; 
    getWindow().setAttributes(params); 

在maifest

<activity android:name=".DialogAct" 
      android:theme="@android:style/Theme.Holo.Light.NoActionBar"></activity> 

這是我的發射活動看起來像

enter image description here

所以,當我的行動吧我送意圖我的新的活動。我在搜索點擊想使它看起來像流行略低於搜索圖標 這是我得到的是 enter image description here

您可以看到以前的活動的搜索被點擊和新的活動加載(藍色部分)。正如你所看到的,新的活動移動到屏幕的中心。但我想要它在操作欄圖標下方。我試過params.gravity = Gravity.TOP | Gravity.RIGHT;。然後我得到這個

enter image description here

我希望把它僅僅低於此前活動的操作欄。我嘗試了很多方法來實現它,但失敗了。所以任何人都可以提出一個梅索德

回答

0

在您的清單你寫

<activity android:name=".DialogAct" 
      android:theme="@android:style/Theme.Holo.Light.NoActionBar"> 

你應該刪除NoActionBar部分

<activity android:name=".DialogAct" 
      android:theme="@android:style/Theme.Holo.Light"> 
+0

如果給它,它會在我的活動中顯示標題欄。我不想顯示 – edwin

+0

,但在您的問題中,您說您希望它位於操作欄下方,如果您不使用操作欄,如何檢測它是否低於操作欄? –

+0

那麼這就是我的問題藍屏在屏幕截圖中是一項活動。沒有標題欄/動作欄,以及您在後面看到的是之前導航到此活動的活動。 – edwin

0

我能想到的兩件事情,可能會有幫助。首先,您可以嘗試將manifest中的Theme更改爲android:theme="@android:style/Theme.Dialog,這應該會給您想要的外觀。

編輯

您可以隱藏與

this.requestWindowFeature(Window.FEATURE_NO_TITLE); 

標題欄,只要確保調用setContentView()

而且之前調用它,如果它並不需要是一個單獨的Activity你可以使用PopupWindow。有了這個,您可以使用isAboveAnchor並使用ActionBar作爲錨,並將其放置在下方或使用其他關聯方法之一。我不知道這些是否能滿足你的需求,但他們可能會爲你工作。

+0

我嘗試改變我的主題,但它沒有幫助它帶出標題欄。這應該避免在我的情況。我不能去popover,因爲有很多片段交易將發生在我的活動。所以我需要完全控制它。 Thant就是爲什麼我採用這種方法 – edwin

+0

如果標題欄是第一個解決方案的唯一問題,那麼請參閱我的編輯。這將允許你隱藏標題欄 – codeMagic

+0

我試過了,但仍然無法實現我所需要的。可以請檢查編輯。 – edwin

-1

嘗試重心而不是右上..

+0

我希望這是在屏幕的右側,這就是爲什麼我給。如果給中心它將移動到屏幕的中心 – edwin

+0

你想要它在右上角? –

+0

如果是的話,給頂部邊緣參數,看看它是如何反應? –

0

@edwin你可以做的是使

params.gravity = Gravity.TOP | Gravity.RIGHT; 

後,您只需提供一些利潤率從上,類似這樣的:

LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    params.setMargins(left, top, right, bottom); 
    yourCustomPopOveractivity.setLayoutParams(params); 

,我認爲這樣做後,你可以得到你需要的位置而你剛纔所做的一切都是正確的。

請嘗試然後告訴我

+0

首先感謝您的努力。實際上,我發現瞭解決方案,以便通過XML中的小變通方法以其他方式提出問題。 – edwin

+0

@edwin噢太棒了!你找到了答案。所以請在這裏提供您的解決方案,如果我的答案也是正確的和有用的,那麼請投票答覆或接受答案,以便如果任何人面臨同樣的問題,可以在這裏找到答案。 :) –