我正在为Android制作应用程序,我正在使用Google Directions API来获取和解析路径中的每条腿。 我正在地图上显示路线(已经有效)
我想显示一个转弯方向的列表(虽然它们不会继续前进,只是一个方向列表。
我有几个问题, 首先,如何获得每条腿的描述?解析JSON让我知道这一点:
"html_instructions": "Head \u003cb\u003enorth\u003c/b\u003e on \u003cb\u003eS Morgan St\u003c/b\u003e toward \u003cb\u003eW Cermak Rd\u003c/b\u003e"
哪个Java输出为:
Head <b>north</b> on <b>S Morgan St</b> toward <b>W Cermak Rd</b>
有一种简单的方法可以将其解析为要在列表中显示的普通字符串吗?或者只是用“”替换html字符?
其次,如何根据数组的大小在地图视图的顶部显示半透明背景的列表?
编辑: 期望的结果应该是这样的:
只有他们使用具有固定数量的textview的TableLayout。我想要这样的东西,最好是小一点,它会显示所有,或者只是一些(并且能够改变)路线描述 无法找到有关这些问题的信息。 感谢
答案 0 :(得分:2)
有一种简单的方法可以将其解析为要在列表中显示的普通字符串吗?
最简单的方法可能就是致电Html.fromHtml(htmlString).toString()
。
其次,如何根据数组的大小显示透明列表?
'透明列表'究竟是什么意思?我假设一个显示“空”项目的列表?对于任何不可见的项目,您可以使用 null
填充数据集,然后可以在Adapter
中查看。或者,您可以例如使用Map<String, Boolean>
,其中值表示您是要在ListView
中显示字符串(键)还是隐藏它/使其透明。
更新问题后编辑:要获得这种透明效果实际上非常简单。 “矩形”只是一个单独的ViewGroup
,背景颜色为黑色,包括透明度;例如#55000000
。您可以使用前两个十六进制数来改变透明度,从而改变视觉色调。
要获取显示在地图顶部的路线信息,您需要使用RelativeLayout
作为根(并且可能为其设置半透明背景颜色)。之后,您可以使用您希望显示的任何内容填充该特定UI。例如,我在前几天创建了类似的东西(作为朋友的生日礼物),将他带到现在的实际位置。我只需添加上一个/下一个按钮即可在导航提示之间手动移动。
(对不起,提示是荷兰语,但我相信你明白了)
答案 1 :(得分:0)
我所采取的一种简单方法是使用 Webview 并在其中加载HTML information
。
例如:
1)让下面给出的 HTML指令是Google Directions API的回复
String routeDirection =
"Head <b>southeast</b> on <b>Vennala High School Rd</b> toward <b>Evra Lane 9</b>" +
"<div style=\"font-size:0.9em\">Pass by Mangalayil Devi temple (on the right)</div>";
2)在您的布局文件中添加网络视图,并在您的代码中引用它:
WebView webViewDirections = (WebView)findViewById(R.id.webView);
3)按照下面的html instruction
加载webview
:
webViewDirections.loadDataWithBaseURL(null, tempRouteDirection, "text/html", "utf-8", null);
4)您甚至可以自定义HTML信息(更改背景颜色,字体颜色......):
webViewDirections.getSettings();
webViewDirections.setBackgroundColor(Color.TRANSPARENT);
webViewDirections.getSettings().setJavaScriptEnabled(true);
webViewDirections.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
view.loadUrl(
"javascript:document.body.style.setProperty(\"color\", \"white\");"
);
}
});
注意:强>
我来到这个解决方案,因为在我的情况下,当我使用Html.fromHtml
作为TextView时,certain information got broken。