背景
我正在尝试使用HERE SDK创建一个Android自动导航应用程序,我想创建一个界面,允许用户在选择位置时与其交互,比如停车场或目的地。
在Google Maps和Waze应用程序中,我注意到它们做同样的事情,下面是它们实现的一些图像(下一张图像):
Waze interface和Google Maps interface
我的问题
我很好奇他们是怎么做到的,而且,我复制同样的东西可行吗?
我尝试了什么?
我搜索了Android汽车应用程序库及其design guidelines的文档,但找不到任何类似的东西。
我测试了这些模板:PlaceListNavigationTemplate和RoutePreviewNavigationTemplate。但是它们不能用来实现我的目标。也许在这种情况下可以使用另一个模板。
谢谢你的帮助。
更新
按照建议,我尝试使用MapTemplate和Pane来实现这个目标,但是我遇到了两个问题。
首先
Rows
不应在Pane
中单击。
第二
从Car API级别6开始,我们可以向行添加Action
@ExperimentalCarApi
@NonNull
@RequiresCarApi(6)
public Builder addAction(@NonNull Action action) {
List<Action> mActionsCopy = new ArrayList<>(mActions);
mActionsCopy.add(requireNonNull(action));
ActionsConstraints.ACTIONS_CONSTRAINTS_ROW.validateOrThrow(mActionsCopy);
mActions.add(action);
return this;
}
我尝试将操作添加到行中
public class LocationPreview extends Screen {
int id;
Pane.Builder pane;
protected LocationPreview(@NonNull CarContext carContext, int id) {
super(carContext);
this.id = id;
}
@SuppressLint("UnsafeOptInUsageError")
@NonNull
@Override
public Template onGetTemplate() {
Header header = new Header.Builder()
.setStartHeaderAction(Action.BACK)
.setTitle("Header")
.build();
pane = new Pane.Builder();
pane.addRow(
new Row.Builder()
.setTitle("Description")
.addText("This is example of MapTemplate")
.build()
);
pane.addRow(
new Row.Builder()
.setTitle("Contact")
.addAction(
new Action.Builder()
.setTitle("+66 66 66 66 66")
.setIcon(CarIcon.ALERT)
.setOnClickListener(this::startChatBot)
.build()
)
.build()
);
return new MapTemplate.Builder()
.setHeader(header)
.setPane(pane.build())
.build();
}
}
但是正如你在output中看到的,我们看不到操作按钮。
1条答案
按热度按时间xmjla07d1#
那么
MapTemplate
(设计指南的幻灯片62和63)呢?