如何在Android Auto车载应用的Row中添加双按钮操作?
Android Auto列表项添加双操作按钮解决方案
Android Auto的Row类确实没有addAction()方法,要给列表项添加两个独立操作按钮,你需要使用Row.Builder提供的setPrimaryAction()和setSecondaryAction()方法,分别绑定两个Action实例来实现。
修改后的完整代码
ListTemplate.Builder templateBuilder = new ListTemplate.Builder(); ItemList.Builder itemList = new ItemList.Builder(); templateBuilder.setLoading(isLoading); if (!isLoading) { for (ParkingList parking : parkingList) { // 构建第一个操作按钮:跳转详情页 Action detailAction = new Action.Builder() .setTitle("详情") .setOnClickListener(() -> getScreenManager().push(new NextScreen(getCarContext())) ) .build(); // 构建第二个操作按钮:触发导航(示例逻辑) Action navigateAction = new Action.Builder() .setTitle("导航") .setOnClickListener(() -> { // 这里替换为你的导航逻辑 // 示例:启动地图导航Intent // Uri geoUri = Uri.parse("geo:" + parking.getLat() + "," + parking.getLng()); // Intent intent = new Intent(Intent.ACTION_VIEW, geoUri); // getCarContext().startActivity(intent); }) .build(); Row rowItem = new Row.Builder() .setTitle(parking.getNome()) .setImage(new CarIcon.Builder( IconCompat.createWithResource( getCarContext(), R.drawable.ic_launcher_foreground)) .build(), Row.IMAGE_TYPE_LARGE) .setBrowsable(false) .addText(parking.getDescrizione()) .addText(parking.getLat() + " " + parking.getLng()) // 设置两个操作按钮 .setPrimaryAction(detailAction) .setSecondaryAction(navigateAction) // 若需保留点击整行的逻辑,可继续保留以下代码 // .setOnClickListener(() -> getScreenManager().push(new NextScreen(getCarContext()))) .build(); itemList.addItem(rowItem); } ItemList templateList = itemList.build(); templateBuilder.setSingleList(templateList); } return templateBuilder.setTitle("停车场列表").build();
关键说明
setPrimaryAction():设置列表项右侧的主操作按钮(优先级更高,显示在左侧)setSecondaryAction():设置次操作按钮(显示在主按钮右侧)- 每个
Action通过Action.Builder创建,只需设置按钮标题和对应的点击事件逻辑 - 如果不需要点击整行的响应逻辑,可以删除原有的
setOnClickListener调用
内容的提问来源于stack exchange,提问作者Mohamed Siad Z
相关产品推荐
相关产品推荐

