2017-01-23 7 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

Я только что проверил код и всплывающие движется вдоль у-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

Смежные вопросы