2017-01-23 144 views
1

我正面臨着一個問題popupWindow.showAtLocation(View parent, int gravity, int x, int y)此處x軸正常工作,但它不會在y上移動-軸。彈出窗口仍然顯示在活動的頂部,但它精細地位於左側或右側的位置。我使用GridView作爲父視圖,我認爲GridView存在一些問題,但我不知道那是什麼問題&如何解決這個問題。 請有人幫助我。PopupWindow.showAtLocation(View parent,int gravity,int x,int y)沒有在GridView的指定位置顯示

下面

是我的代碼:

final GridView gridView = (GridView)inflater.inflate(R.layout.popup_window, null, false); 
gridView.setNumColumns(5); 
gridView.setVerticalSpacing(50); 

PopupAdapter adapter = new PopupAdapter(this, iconIds, subjectNames); 
gridView.setAdapter(adapter); 

popupWindow = new PopupWindow(gridView, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, false); 

findViewById(R.id.open_popup_btn).setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) 
    { 
     if(!popupWindow.isShowing()) { 
      popupWindow.showAtLocation(gridView, Gravity.NO_GRAVITY, 100, 400); 
     } 
     else 
      popupWindow.dismiss(); 
    } 
}); 

以下是我popup_window.xml

<?xml version="1.0" encoding="utf-8"?> 
<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/grid_view"> 

</GridView> 

回答

0

我只是檢查你的代碼,並沿着Y型axis.Just彈出移動代碼讓你知道,使所有屏幕看起來均勻,你應該使用下面的方法。

popupWindow.showAtLocation(gridView, Gravity.NO_GRAVITY,convertDpToPx(100), convertDpToPx(400)); 


private int convertDpToPx(int dp){ 
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density); 
} 

希望這有助於!

+0

謝謝,但它沒有幫助我。只是x值轉換爲像素,但y不工作,仍然是同樣的問題。 – Nadimuddin

+0

您在活動中顯示此彈出窗口? –

+0

是的,我在活動中展示了這一點。 – Nadimuddin

相關問題