2

Android アプリケーションを作成しています。そのアプリケーションでは、ダイアログ ウィンドウを使用して、サーバー側からの HTML コンテンツを表示しています。以下の方法でダイアログウィンドウを作成しました。

private void displayDialogWindow(String html) {

        // here I have created new dialog window
        dialog = new Dialog(cordova.getActivity(),
                android.R.style.Theme_NoTitleBar);
        dialog.getWindow().getAttributes().windowAnimations =
android.R.style.Animation_Dialog;
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(true);


        // creates a new webview to display HTML and attached to
dialog to display
        webview = new WebView(cordova.getContext());
        webview.setLayoutParams(new LinearLayout.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        webview.setWebChromeClient(new WebChromeClient());
        webview.requestFocusFromTouch();

        final String mimeType2 = "text/html";
        final String encoding2 = "UTF-8";
        webview.loadDataWithBaseURL("", html, mimeType2, encoding2, "");
        dialog.setContentView(webview);

        // get the screen size of the device
        WindowManager wm = (WindowManager) ctx
                .getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();
        Point size = new Point();
        display.getSize(size);
        int width = size.x;
        int height = size.y;

        // set appropriate sizes to the dialog window whether there is
side menu or not
        lp.copyFrom(dialog2.getWindow().getAttributes());
        lp.width = width ;
        lp.height = height - 100;
        dialog.getWindow().setAttributes(lp2);

        dialog.show();
    }

上記の方法を使用して、ダイアログウィンドウを正常に作成できました。

そして、スレッドを使用してダイアログウィンドウを作成しています。

Runnable runnable = new Runnable() {
public void run() {

                displayDialogWindow(html);

            }
};

しかし、ダイアログウィンドウを一度表示した後、ダイアログウィンドウの幅を動的に変更したい。(たとえば、アプリの別のボタンをクリックすると、ウィンドウの幅が狭くなり、別のボタンが押されると元の幅になります)。

ダイアログウィンドウの幅を動的に変更するのを手伝ってくれる人はいますか?

4

1 に答える 1

3

ダイアログを変更するたびに、ダイアログを「再作成」する必要があると思います。yourDialog.show()メソッドの後に、次の行を挿入できます。

yourDialog.getWindow().setLayout((6 * width)/7, LayoutParams.WRAP_CONTENT);

これにより、ダイアログ ウィンドウとそのコンテンツのサイズを変更できます。もちろん、高さは画面のサイズです。

于 2013-09-10T09:24:36.180 に答える