2017-07-28 3 views
0

Je suis un en utilisant un GridView et un PopupMenu pour chaque élément de la GridView. Malheureusement, la fenêtre apparaît en dessous ou au-dessus de l'élément sur lequel vous avez cliqué. Je voudrais qu'il apparaisse au centre de l'écran horizontalement et verticalement.Android: Position de PopupMenu

PopupMenu popupMenu = new PopupMenu(wrapper, v); 
popupMenu.getMenuInflater().inflate(R.menu.item_gridview_menu, popupMenu.getMenu()); 

J'ai essayé de placer la gravité au centre comme celui-ci

PopupMenu popup = new PopupMenu(this, v,Gravity.CENTER); 

mais il centre juste la fenêtre contextuelle sur l'élément qui est cliqué. Aussi je styler la fenêtre contextuelle avec:

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu"> 
    <item name="android:popupBackground">@android:color/white</item> 
    <item name="android:gravity">center_horizontal</item> 
    <item name="android:textColor">@color/white</item> 
    <item name="android:background">@color/colorPrimary</item> 
</style> 

mais cela n'a pas aidé non plus. Des idées?

Répondre

0

Vous aviez une tâche comme celle-ci et avez créé AlertDialog personnalisé pour cela.

final Dialog dialog = new Dialog(context); 
     dialog.setContentView(R.layout.custom); // Your custom XML 
     dialog.setTitle("Title..."); 

     // set the custom dialog components - text, image and button 
     TextView text = (TextView) dialog.findViewById(R.id.text); 
     text.setText(); 

     ImageView image = (ImageView) dialog.findViewById(R.id.image); 
     image.setImageResource(); 

     Button dialogButton = (Button) 
     dialog.findViewById(R.id.dialogButtonOK); 
     dialogButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
+0

est-il possible d'ajouter des éléments cliquables dans une boîte de dialogue d'alerte? Je voudrais l'utiliser comme un menu pas seulement une fenêtre contextuelle. –

+0

bien sûr, comme je l'ai montré dans 'dialogButton.setOnClickListener' vous pouvez placer n'importe quel élément de vue dont vous avez besoin. ImageView, n'importe quelle mise en page et ainsi de suite –

+0

Et n'oubliez pas d'utiliser la vue racine avant 'findViewById' –

0

essayer cette boîte de dialogue à l'aide

final Dialog myDialog = new Dialog(this); 
    myDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    myDialog.setContentView(R.layout.dialog_layout); 

    Window window = myDialog.getWindow(); 
    window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); 
    window.setGravity(Gravity.CENTER); 
    myDialog.show(); 
+0

merci beaucoup pour vos réponses, vous avez été très utile. –

+0

@KostasSt le plus bienvenue –