4

ダイアログのコンテンツが増加するときに、アラートダイアログの位置をステータスバーの後ろに設定したいのですが、どうすればいいですか? 独自のレイアウトを使用してカスタム AlertDialog を作成しています....助けてください....


以下は私のコードです。アラートダイアログの高さとxy位置を設定していますが、それでもその効果は表示されません..

AlertDialog.Builder builder = new AlertDialog.Builder(this);
       LayoutInflater inf = getLayoutInflater();
        View layout = inf.inflate(R.layout.main, null);
        builder.setView(layout);
        builder.setTitle("Add to Home screen");
    AlertDialog dialog = builder.create();
        WindowManager.LayoutParams WMLP = dialog.getWindow().getAttributes();
        int dialogOriginalHeight = WMLP.height;
    WMLP.height += 750;
    Log.i("XnY", "x="+WMLP.x+", y="+WMLP.y);
    WMLP.x = -10;   //x position
    WMLP.y = -10;   //y position
    Log.i("XnY", "x="+WMLP.x+", y="+WMLP.y);
    dialog.getWindow().setAttributes(WMLP);
    Log.i("POSITION", "POS::HEIGHT:"+WMLP.height);
    dialog.show();
4

2 に答える 2

1
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();

wmlp.gravity = Gravity.BOTTOM | Gravity.RIGHT;
wmlp.x = 50;   //x position
wmlp.y = 50;   //y position

dialog.show();

良い選択肢になることができます

于 2013-05-02T14:16:08.307 に答える
1

私はこれが本当に古いことを知っていますが、後でこれを見る人のために:

デフォルトの重力を使用しているため、x と y は無視されています。

ドキュメントから:

このウィンドウの X 位置。デフォルトの重力では無視されます。LEFT または START または RIGHT または END を使用すると、指定されたエッジからのオフセットが提供されます。

右上からオフセットする必要があったので、重力を 0x00000035 に設定しました。これは上と右です。(上が 0x00000030、右が 0x00000005)。これにより、x と y が無視されなくなります。

alert.getWindow().setGravity(0x00000035);
于 2011-12-14T17:14:05.190 に答える