【发布时间】:2020-11-04 14:13:34
【问题描述】:
我正在尝试通过单击警报对话框中的按钮打开 Web 视图。 一切正常,但我以编程方式创建的视图的高度与警报对话框不匹配。
我的警报对话框代码是:
AlertDialog.Builder alertBuilder = new AlertDialog.Builder(_context);
AlertDialog alert = alertBuilder.Create();
switch (_type)
{
case ButtonType.PdfButton:
//open pdf
if (_pdfUrlType)
alert.SetView(PdfHandler(alert));
break;
default:
break;
}
alert.Show();
alert.Window.SetLayout(700, 1800);
}
catch (Exception ex)
{
}
finally
{
}
我正在调用调用 URL pdf 的 pdf 处理程序
private FrameLayout PdfHandler(AlertDialog dialog)
{
if (_pdfUrlType)
{
return GenerateUrlPdf(dialog);
}
}
下面是 generateurlpdf 的代码
private FrameLayout GenerateUrlPdf(AlertDialog dialog)
{
FrameLayout layout = new FrameLayout(_context);
FrameLayout.LayoutParams lpMatchParent = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MatchParent, FrameLayout.LayoutParams.MatchParent);
//layout.LayoutParameters = lpMatchParent; // i applied this on frame layout but didn't work out
// I also tried to get alertdialog height during runtime but it shows zero bcz its isn't made yet
var loader = GenerateLoaderGif();
var webView = GenerateWebView(loader);
layout.AddView(webView, lpMatchParent);
layout.AddView(loader, lpMatchParent);
return layout;
}
loader 和 webview 代码如下
private WebView GenerateWebView(LinearLayout _loader)
{
WebView _view = new WebView(Application.Context);
((WebView)_view).Settings.JavaScriptEnabled = true;
((WebView)_view).Settings.SetAppCacheEnabled(true);
((WebView)_view).Settings.SetAppCacheMaxSize(long.MaxValue);
((WebView)_view).Settings.AllowFileAccess = true;
((WebView)_view).Settings.CacheMode = CacheModes.CacheElseNetwork;
((WebView)_view).LoadUrl("https://docs.google.com/gview?url=" + _url);
return _view;
}
private LinearLayout GenerateLoaderGif()
{
LinearLayout _loader = new LinearLayout(_context);
GifImageView GifView = new GifImageView(_context);
LinearLayout.LayoutParams loaderparams = new LinearLayout.LayoutParams(150, 150);
loaderparams.Gravity = GravityFlags.Center;
_loader.SetGravity(GravityFlags.Center);
_loader.SetBackgroundColor(Color.ParseColor("#9B000000"));
Stream input = _context.Resources.OpenRawResource(Resource.Drawable.loadingGif);
GifView.SetBytes(Common.ConvertStreamToByte(input));
GifView.StartAnimation();
_loader.AddView(GifView, loaderparams);
return _loader;
}
当加载器完成加载时,webview 也显示在 150 像素的有限区域中,我只将 150 像素应用于作为框架布局子级的线性布局。
在调试时我看到 webview 和 loader 的高度都是 150 像素。
下面是活动截图
【问题讨论】:
标签: android xamarin.android android-alertdialog