2012-04-08 54 views
9

設計要求是,在listview的項目中有一個listview,有一個按鈕,按下按鈕,然後,在按鈕上方顯示一個popupwindow,而不是底部。如何在按鈕上方始終顯示PopupWindow(視圖)?

在Android中,使用「showAsDropDown」,Popupwindow默認顯示在按鈕底部(View或anchor)。 但是,如果底部不能顯示,Popupwindow將顯示在按鈕(視圖或錨點)的頂部。

onTop = (displayFrame.bottom - mScreenLocation[1] - anchor.getHeight() - yoff) <(mScreenLocation[1] - yoff - displayFrame.top); 

所以,我根據這一點,通過「setSelectionFromTop」動按鈕的項目,讓判斷是沒有enougn顯示按鈕的底部以達到效果。

在安卓4.0.3,是確定的,該項目的舉動,和popupwindow顯示新的位置和aboved, 但是, 在Android 2.2系統,該popupwindow仍顯示新聞在哪裏,而不是位置移動後。

boolean onTop = (displayFrame.bottom - mScreenLocation[1] - v.getHeight() - 0) < (mScreenLocation[1] - 0 - displayFrame.top); 
if(!onTop){ 
mListMain.setSelectionFromTop(mListMain.getPositionForView(v),(displayFrame.bottom - v.getHeight() + displayFrame.top)/2); 
} 

可以幫助我,如何解決這個問題.. T_T

回答

5

可能是不一樣的情況,但我的解決方案是:?!

public class BaloonView extends PopupWindow { 
    public BaloonView(Context context, View content) { 
     super(context); 
     setWidth(WindowManager.LayoutParams.WRAP_CONTENT); 
     setHeight(WindowManager.LayoutParams.WRAP_CONTENT); 
     setTouchable(true); 
     setFocusable(true); 
     setOutsideTouchable(true); 
     setTouchInterceptor(new View.OnTouchListener() { 
       @Override 
       public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { 
        BaloonView.this.dismiss();     
        return true; 
       }    
       return false; 
       } 
      }); 
    } 

    public void showUnderView(View view, View content) { 
     setBackgroundDrawable(view.getContext().getResources().getDrawable(R.drawable.popup_inline_error_holo_dark)); 
     FrameLayout container = new FrameLayout(view.getContext()); 
     container.addView(content); 
     setContentView(container); 
     int[] location = new int[2]; 
     view.getLocationOnScreen(location); 
     container.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); 
     int xoffset = view.getWidth()/2 - container.getMeasuredWidth()/2; 
     showAsDropDown(view, xoffset, 0); 
    } 
} 
+0

我們可以顯示彈出剛剛錨以上?在錨點下面展示這一個。 – 2016-12-05 13:47:14