gpt4 book ai didi

android - 带有 Android Webview 的谷歌图表

转载 作者:搜寻专家 更新时间:2023-11-01 08:15:40 25 4
gpt4 key购买 nike

我正在尝试执行典型的操作,将数据加载到 URL 字符串中,使用所有日期调用 google 的图表 API,然后将其加载到 Webview 中。

问题:有人有直接“正确”的方法来做到这一点吗?

我整晚都在搞这个。

这里是主要问题:

WebView 设置为 Fill_Parent。意思是我真的不知道确切的宽度和高度。由于 google 的 API 要求您提供宽度和高度,我如何准确地获取 webview 的宽度和高度以便我可以将其发送过来?我试过这个解决方案:

final WebView web = (WebView)findViewById(R.id.webviewgraph);
ViewTreeObserver tree = web.getViewTreeObserver();
tree.addOnGlobalLayoutListener(new OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{...code continues

一切似乎都井井有条,但是当我调用 web.getWidth()、web.getDrawingBounds() 或 web.getMeasuredWidth() 时,返回的总是比屏幕实际显示的更多。现在我正在通过减去 136 像素的常量偏移来解决这个问题......但是,这并不适用于所有设备。

有人知道在流畅的 WebView 中使用 google map API 的“正确”方法吗?或者有人知道如何获得 View 的实际正确宽度和高度吗?

谢谢

更新我更改了我的代码,现在我正在使用覆盖 OnSizeChanged 事件的自定义 webview。返回的宽度和高度......不幸的是仍然相同......太大了。

更新在进一步分析宽度和高度之后,我想出了这个:

int w = (int)((float)width * .667f);
int h = (int)((float)height * .667f);

到目前为止,这适用于我正在测试的设备。为什么宽度和高度会返回比实际宽度多 1/3 的值?我不知道。

最佳答案

我没有时间仔细检查,但我发现您的 0.667f 很可能与 webview 根据您的设备密度缩放这一事实有关。

根据 http://developer.android.com/guide/webapps/targeting.html#ViewportDensity“高密度设备以比实际像素分辨率大 1.5 倍的默认比例因子显示网页,以匹配目标密度”

您需要找到目标密度用途并将其用作比例:

final float scale = getResources().getDisplayMetrics().density;

// Your code:
int w = (int)(width / scale);
int h = (int)(height / scale);

我不太了解这个主题,但我认为您可以使用以下方法来防止缩放

<meta name="viewport" content="target-densitydpi=device-dpi" />

但不要相信我的话。此外,我不确定视口(viewport)从哪个 API 级别开始有效。

关于android - 带有 Android Webview 的谷歌图表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com