2017-01-11 16 views
0

アンカービューを備えたListPopupWindowを表示しています。アンカービューに関して、ListPopupWindowの異なる位置に異なる内容を表示する必要があります。ListPopupWindowがアンカービューの上または下に表示されているかどうかを検出する方法はありますか?

たとえば、ListPopupWindowがアンカービューの上に表示されている場合、ListPopupWindowがアンカービューより下に表示されている場合、そのコンテンツは異なるコンテンツになります。

私の問題は、どのようにListPopupWindowの垂直位置を検出できるのですか?アンカービューの上か下かを示します。 事前に感謝!

+0

だけListPopupWindow listPopupを宣言します。グローバルとして、(listPopup.isShowing())listPopup.dismissが新しいインスタンスを作成するかどうかをチェックする –

答えて

0

ListPopupWindowには既定のメンバーとしてPopupWindowがあり、パッケージ外ではアクセスできません。反射を使用する必要があります。

がextentedクラスを作成し、ctorの中でこのコードを使用

try { 
     Field f = ListPopupWindow.class.getDeclaredField("mPopup"); 
     if (f != null) { 
      f.setAccessible(true); 
      Object obj = f.get(this); 
      if (obj != null) { 
       mSuperPopup = (PopupWindow) obj; 
      } 
     } 
    } catch (Exception e) { 
     Log.e(TAG, e.getMessage()); 
    } 

private PopupWindow mSuperPopup = null; 

public boolean isAboveAnchor() { 
    if (mSuperPopup != null) 
     return mSuperPopup.isAboveAnchor(); 
    return false; 
} 
関連する問題