我有一个DialogFragment(显示为对话框),其布局包含一个WebView控件。
布局设置为wrap_content
。我正在使用平板电脑,并希望显示为对话框,但不希望高度与屏幕的高度相匹配。
Web视图显示在构建时定义的HTML内容。
HTML包含可以隐藏和显示内容的链接(隐藏/显示'divs')。
当我点击链接展开它们时,对话框的高度随着内容的显示而增加。
但是,当我折叠条目时,对话框的高度不会收缩。
我的偏好是在加载内容后修复对话框的高度。如果内容被隐藏,则无法使对话框的高度降低。
先谢谢,彼得。
答案 0 :(得分:1)
简单尝试
尝试onClickListener
中的invalidate();
yourWebView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
// TRY to invalidate();
// Try to setVisibility(View.GONE); then directly (View.VISIBLE)
return false;
}
});
更难的东西
loadUrl()
开始)在那里,当div消失时,你可能会找到一种模仿这种行为的方法
答案 1 :(得分:1)
尽管代码需要清理并且可能有更简洁的方法,但是我在WebView的onPageFinished
事件中添加了以下内容,它确实帮我修复了html内容之后的对话框高度已加载。
public void onPageFinished(WebView view, String url) {
....
webView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (webView.getHeight() < currentHeight) {
currentHeight = webView.getHeight();
}
final LayoutParams params = webView.getLayoutParams();
params.height = currentHeight;
webView.setLayoutParams(params);
return false;
}
});
}
答案 2 :(得分:0)
虽然这可能是可能的,但我相信当用户与之交互时,有一个更改大小的对话框不是一个非常好的用户界面(我不知道你的应用程序,所以也许我可能会误判)。也许你应该考虑一个常规的Activity而不是在对话框中显示你的Webview。
答案 3 :(得分:0)
我来自iOS背景。你需要在iPad中使用类似于弹出控件的东西。
或者,您可以使用LayoutInflator调整视图的大小。 This blog post (Layou resources in Android)似乎准确地描述了如何做到这一点。看起来人们已经取得了不错的成绩。