【发布时间】:2014-06-12 12:29:17
【问题描述】:
我在我的应用程序中使用操作栏下拉导航列表(模式 ActionBar.NAVIGATION_MODE_LIST)。
我正在尝试在选择其中一项时启动对话框。使用回调来获取位置并可以显示对话框。
public boolean onNavigationItemSelected(int position, long id) {
}
但是当用户没有在对话框上选择任何操作,或者关闭它,或者用户再次选择下拉菜单并选择相同的项目时,我需要再次显示对话框。但是如果再次选择相同的项目,则不会触发“onNavigationItemSelected”。一个
我已经实现了一个自定义 SpinnerAdapter 并覆盖了“getView”(相应项目的标题)和 getDropDownView“(下拉项目)。我可以更改标题,但我想在每次选择特定项目时启动对话框从下拉菜单中。
'Moves' 流行应用使用了类似的方法。启动屏幕在操作栏上有三个选项'今天''昨天''特定日期'。应用程序可以在每次“特定日期”项目时启动(日期选择器对话框)被选中。我正在尝试实现确切的 UI 模式。无法获得如何实现它的线索。
我确实尝试为特定下拉项设置 onClick 侦听器。这有点奏效。 但是在单击设置了 onClick 事件的项目后,下拉菜单没有被关闭。
由于我们吸收了点击事件,框架也不会为该特定项目执行背景状态更改。
在“移动”应用程序上需要注意的一点是,一旦选择了“特定日期”,它不会将所选项目设置为第三个选项,导航仍然保留在前一个所选项目上,仅显示日期选择器对话框.
我尝试实现 onTouch Listener 并基本上吸收了点击事件, 一旦发生第一个触摸事件(ACTION_DOWN),就会启动对话框。单击后它确实关闭了下拉菜单并显示了背景状态更改。但这并不能带来良好的用户体验,因为我们需要在用户完成点击操作时才启动对话框。
holder.title.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
showTimePickerDialog();
return false;
}
}
想知道移动应用会如何完成。任何见解如何实现这种行为。 ?
【问题讨论】:
标签: android android-actionbar android-actionmode