30

私は Android 用のアプリケーションを開発しており、ユーザーが画面の下部にある特定のメニュー バー オブジェクト (水平に並んだ小さな画像で構成される) をクリックすると、ポップアップ ウィンドウを使用しています。

クリックすると、ポップアップウィンドウがクリックされたビューの左上隅に固定され、一番上に表示されるようになります。

関連すると思われる唯一のメソッドは、showAsDropDown(View anchor, int xoff, int yoff)showAtLocation(View parent, intgravity, int x, int y)です。showAsDropDown の問題は、ビューの左下隅に固定されていることです。

これを実装する別の方法はありますか?

4

10 に答える 10

43

popupWindow.showAtLocation(...)実際には、画面上に絶対に配置されたウィンドウを表示します(アプリケーションでさえありません)。その呼び出しのアンカーは、そのウィンドウ トークンにのみ使用されます。座標は、指定された重力からのオフセットです。

実際に使用したいものは次のとおりです。

popupWindow.showAsDropDown(anchor, offsetX, offsetY, gravity);

この呼び出しは API 19 以降でのみ使用できるため、以前のバージョンでは次を使用する必要があります。

popupWindow.showAsDropdown(anchor, offsetX, offsetY);

これらの呼び出しは、指定されたアンカー ビューに関連するポップアップ ウィンドウを表示します。デフォルトの重力 (重力を指定せずに呼び出す場合) は、アプリ内のさまざまな場所でGravity.TOP|Gravity.START明示的に使用している場合、時間がかかることに注意してください:)Gravity.LEFT

于 2015-03-26T17:24:47.933 に答える
10

showAsDropDown(View anchor, int xoff, int yoff)構文のyoffパラメータを使用して、popupWindow をそのアンカーの高さだけ移動する必要がありました。

popupWindow.showAsDropDown(anchor, 0, -anchor.getHeight()+popupView.getHeight);

また、アンカーに許可されている最大の高さが変換を許可していない場合、ポップアップが正しく表示されない可能性があることに注意してください。

于 2016-04-06T16:07:05.140 に答える
6

私はこのコードを持っています:すべてのSDKバージョンの特定のビュー(Gravity End)の下のPopupWindow。

        // display the popup[![enter image description here][1]][1]
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            mPopupWindow.showAsDropDown(v, 0, 0, Gravity.END);
        } else {
            mPopupWindow.showAsDropDown(v, v.getWidth() - mPopupWindow.getWidth(), 0);
        }

ここで View v は ImageButton Calendar です。

于 2017-03-16T04:00:18.173 に答える
4

次の方法で、常にアンカーの上にポップアップを表示できます

popupWindow.showAsDropDown(anchor, 0, -anchor.getHeight()-popupView.getHeight);
于 2018-03-14T08:11:53.447 に答える
-5

popupwindow.showAsDropDown (アンカー、0、-125); このことは私のために働く

于 2013-07-24T13:50:06.303 に答える