2016-06-08 143 views
0

我有一個活動,我想以彈出窗口的形式顯示。彈出窗口的位置

我有以下代碼,但活動顯示在中心。我想在另一個地方展示它。可能在我的工具欄下。

 protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_popup_message); 

    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

    int width = dm.widthPixels; 
    int height = 120; 

    getWindow().setLayout((int) (width * .98), height); 

回答

1

您需要獲取當前視圖窗口並設置該窗口的x和y參數。所以它會在預期的地方設置。

以下是我如何在願望的地方設置我的對話框的例子。

Window window = getWindow(); 
    // set "origin" to top left corner, so to speak 
    window.setGravity(Gravity.TOP | Gravity.START); 
    // after that, setting values for x and y works "naturally" 
    WindowManager.LayoutParams params = window.getAttributes(); 
    params.x =selectedViewWidth; 
    params.y = selectedViewHeight/2; 

    window.setAttributes(params); 

我個人認爲,如果你想顯示彈出式窗口,然後使用,而不是活動的,你也可以使用PopupWindowDialogFragment。您可以更有效地管理此控件。 有很多相同的教程可用。

+0

謝謝!我在你寫的代碼中添加了代碼,但是我有一個getDialog()問題。這是我需要在其他地方定義的東西嗎? – Filippo

+0

使用'Window window = getWindow()'; getDialog()是我的代碼來獲取當前窗口。當你在活動中時,你可以直接使用'getWindow()'來代替。 – Beena