Spinner弹出下拉列表后按[返回]键的事件如何处理

边城狂人 2012-01-13 12:04:18
我有一个checkbox和一个spinner
checkbox选中的时候弹出spinner的下拉列表
如果这个时候按【返回】键取消了下拉列表,那需要把checkbox设置为未选中状态。

现在我不知道如何监听下拉列表被取消,请大家支支招。
...全文
296 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
边城狂人 2012-01-13
  • 打赏
  • 举报
回复
这分不想浪费了,请大家想想看还有啥别的好办法不!
边城狂人 2012-01-13
  • 打赏
  • 举报
回复
已用用onTouch事件解决了。
在onTouch的ACTION_UP的时候弹出下拉列表,并返回true即可。

完整代码如下:


checkbox.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_UP:
// 这里弹出下拉列表,并返回true避免事件继续
if (!checkbox.isChecked()) {
spinner.performClick();
return true;
}
}
return false;
}
});

checkbox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (!isChecked) {
spinner.setSelection(0);
}
}
});

spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
checkbox.setChecked(position > 0);
}

@Override
public void onNothingSelected(AdapterView<?> parent) {}
});
边城狂人 2012-01-13
  • 打赏
  • 举报
回复
这个还真不知道……下拉列表有可能是CheckBox弹出来的,也有可能是直接触摸弹出来的。如果是直接触摸弹出来的,就不知道了。

有办法判断当前下拉列表是弹出的么?或者有相关事件?
libRA_kin 2012-01-13
  • 打赏
  • 举报
回复
你应该能知道下拉列表被弹出吧,弹出了你设置一个标记
然后按返回键时 在keydown方法中判断标记;如果是spinner将要消失 那么你设置checkbox状态
spinner显示时,默认按返回键就是消失的吧

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧