Android对话框无法调整大小(PhoneGap)

时间:2013-03-12 18:53:49

标签: java javascript android cordova

我有一个Dialog的自定义视图,它允许我设置对话框的x,y,宽度和高度,这一切都正常。

我将此Dialog置于PhoneGap创建的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);

dialogDimensionsJSONObject,其中包含x,y,width,height参数,dpToPixels()转换尺寸以解决像素密度差异(即在Nexus 10,300px上)在WebView中平板电脑实际上是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的方式,包括创建新的设置,复制等。似乎没有什么区别。我甚至尝试将其设置为填充其父级和东西,但没有效果。

任何想法如何让它调整大小?也许它甚至不是重绘的问题?

0 个答案:

没有答案