我在我的应用中使用了Actionbar下拉导航列表(模式 ActionBar.NAVIGATION_MODE_LIST )。
我正在尝试启动其中一个项目的对话框。使用回调来获取位置并显示对话框。
public boolean onNavigationItemSelected(int position, long id) {
}
但是当用户没有在对话框上选择任何操作或将其解除时,或者用户再次选择下拉菜单并选择相同的项目时,我需要再次显示该对话框。但如果再次选择相同的项目,则不会触发' onNavigationItemSelected '。甲
我已经实现了一个自定义SpinnerAdapter并覆盖了'getView'(相应项目的标题)和getDropDownView'(下拉项目)。我可以更改标题,但我想在每次选择特定项目时启动对话框从下拉开始。
'移动'热门应用使用了类似的方法。操作栏上的启动画面有微调器,有三个选项'今天''昨天''特定日'。应用程序可以在每次“特定日期”项目时启动(日期选择器对话框)被选中。我正在尝试实现确切的UI模式。无法得到如何实现它的线索。
我确实尝试为特定的下拉项设置onClick侦听器。它有点工作。 但是在点击了设置onClick事件的项目后,下拉菜单没有被删除。
由于我们吸收了click事件,因此框架也不会对该特定项执行背景状态更改。
“移动”应用程序需要注意的一件事是,一旦选择“特定日期”,它就不会将所选项目设置为第3个选项,导航仍然保留在上一个选定项目上,只显示日期选择器对话框。
我尝试实现onTouch Listener,基本上dint吸收了click事件, 在第一次触摸事件发生后立即启动对话框(ACTION_DOWN)。点击后它确实关闭了下拉菜单并显示了背景状态变化。但它并没有带来良好的用户体验,因为我们只有在用户完成点击操作时才需要启动对话框。
holder.title.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
showTimePickerDialog();
return false;
}
}
想知道应用程序将如何移动。任何见解如何实现这种行为。 ?
答案 0 :(得分:0)
使用简单的if
@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
if(itemPosition==0){
showDialogToday();
}else if(itemPosition==1){
showDialogYesterday();
} else{
showDialogOtherday();
}
return true;
}
使用对话框代码调用的每个方法都很容易......我用一个片段来使用它,这很简单