2

私はDialogカスタムビューを持っていて、ダイアログのx、y、幅、高さを設定することができ、それはすべてうまくいっています。

これをPhoneGap による作成Dialogの上に配置します。WebView

で何が起こっているかに応じて、ダイアログの位置を変更する必要がある場合があるWebViewため、JavaScript から呼び出してサイズを変更できる関数を作成しました。

これが私が最初に設定する方法ですDialog

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.x = this.dpToPixels(dialogDimensions.optInt("x")); 
lp.y = this.dpToPixels(dialogDimensions.optInt("y"));
lp.width = this.dpToPixels(dialogDimensions.optInt("width")); 
lp.height = this.dpToPixels(dialogDimensions.optInt("height"));
lp.gravity = Gravity.TOP | Gravity.LEFT;

// make it possible to click outside dialog
lp.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;

dialog.setContentView(main);
dialog.show();
dialog.getWindow().setAttributes(lp);

dialogDimensionsJSONObjectx、y、幅、高さのパラメータを持ちdpToPixels()、ピクセル密度の違いを考慮してサイズを変換します (つまり、Nexus 10 では、WebView の 300px は実際にはタブレットでは 600px です)。

これが私のサイズ変更方法です:

public String resize(JSONObject dimensions) {
    dialogDimensions = dimensions;
    
    WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();

    lp.x = this.dpToPixels(dialogDimensions.optInt("x")); 
    lp.y = this.dpToPixels(dialogDimensions.optInt("y"));
    lp.width = this.dpToPixels(dialogDimensions.optInt("width")); 
    lp.height = this.dpToPixels(dialogDimensions.optInt("height"));

    Log.i(LOG_TAG, dialog.getWindow().getAttributes().debug("Before Resize: "));
    dialog.getWindow().setAttributes(lp);
    Log.i(LOG_TAG, dialog.getWindow().getAttributes().debug("After Resize: "));

    return "";
}

ログメッセージは私が期待するものを記録していますが、ダイアログは何もしません...

私が試したこと

の前、後、および前後の両方を試しましdialog.show()た。dialog.show()setAttributes()

私もそれを無効にしようとしましたが、それを正しく行ったかどうかはわかりません...それは私が StackOverflow からコピーしたものでした。これが私が試したことです:

dialog.getCurrentFocus().invalidate();
dialog.getWindow().getCurrentFocus().invalidate();

main.invalidate(); // view passed into dialog.setContentView

また、新しいセットの作成、コピーなど、いくつかの異なる設定/取得方法を試しましたがLayoutParams、違いはないようです。親などを埋めるように設定しようとしましたが、効果はありませんでした。

サイズを変更する方法はありますか?多分それは再描画の問題でさえありませんか?

4

0 に答える 0