2016-04-05 13 views
1

Ben bir pop-up penceresini açtığınızda, metin görünümü tıklattığınızda ben pop-up oluşturmak için bir rehber izledim ve iyi çalışıyorum, sadece pop-up konumu ne ben İstediğinizde, pop-up'ın sol üst köşesini nokta konumunda gösterecek gibi görünmesine rağmen, sol alt köşeyi bunun gibi belirtilen noktada olmasını istiyorum, arama yaptıktan sonra yerçekiminin bunun için sorumlu olduğunu gördüm (bkz. developer.android). Ben Gravity.BOTTOM|Gravity.LEFT yerçekimi değiştirmek açılan yolu metinPopupwindow yerde göstermek, yerçekimi değiştirerek yanlış pozisyonu verir

açılan XML yukarıda gösterir

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

    android:orientation="vertical" 
    android:gravity="center" 
    android:padding="7dp" 
    android:background="#d1a2a2"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Medium Text" 
     android:id="@+id/textView37" 
     android:gravity="center" 
     android:textAlignment="gravity" 
     android:textStyle="bold" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:text="Medium Text" 
     android:id="@+id/textView41" /> 
</LinearLayout> 

İşte Bu yöntemler

@Override 
    public void onWindowFocusChanged(boolean hasFocus) { 

     int[] location = new int[2]; 
     TextView button = (TextView) findViewById(R.id.textView2); 

     // Get the x, y location and store it in the location[] array 
     // location[0] = x, location[1] = y. 
     button.getLocationOnScreen(location); 

     //Initialize the Point with x, and y positions 
     p = new Point(); 
     p.x = location[0]; 
     p.y = location[1]; 
    } 

    //............ 
    private void showPopup(final Activity context, Point p) { 


     // Inflate the popup_layout.xml 
     LinearLayout viewGroup = (LinearLayout) context.findViewById(R.id.popup); 
     LayoutInflater layoutInflater = (LayoutInflater) context 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View layout = layoutInflater.inflate(R.layout.popup, viewGroup); 

     // Creating the PopupWindow 
     final PopupWindow popup = new PopupWindow(context); 
     popup.setContentView(layout); 
     popup.setWindowLayoutMode(ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewGroup.LayoutParams.WRAP_CONTENT); 
     popup.setFocusable(true); 

     // Some offset to align the popup a bit to the right, and a bit down, relative to button's position. 
     int OFFSET_X = 30; 
     int OFFSET_Y = 30; 

     // Clear the default translucent background 
     popup.setBackgroundDrawable(new BitmapDrawable()); 

     // Displaying the popup at the specified location, + offsets. 
     popup.showAtLocation(layout, Gravity.NO_GRAVITY, p.x + OFFSET_X, p.y + OFFSET_Y); 

     // Getting a reference to Close button, and close the popup when clicked. 
     TextView close = (TextView) layout.findViewById(R.id.textView37); 
     close.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       popup.dismiss(); 
      } 
     }); 
    } 

cevap

2

Sen showAsDropDown kullanabilirsiniz() veya showAtLocation() yöntemi I

vfy.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View arg0) { 
       //Open popup window 
       if (p != null) 
        showPopup(MainActivity.this, p); 
      } 
    }); 

sahip koddur. ben showAtLocation() yöntemini kullanıyorum Change gravity of PopupWindow ve How to show PopupWindow at special location?

+0

bu bağlantıları bakınız ama ben seni xml yukarıda da belirtildiği gibi yerçekimi –

+0

R.layout.popup aynı mı değiştirdiğinizde yanlış konum kazandırmaktadır. –

+0

evet, kopyala yapıştır –