安卓点击Edittext弹出对话框实现操作(DatePicker,实现日期的输入)隐藏键盘

问题:Edittext不依靠button独立实现日期输入。--------一定要看方案三

发现EditText setOnClickListener事件响应中,点击俩次才会响应。当焦点在其他控件上时,第一次点击获取焦点,第二次点击响应。

解决方案一:

改用setOnTouchListener监听android.view.View下的OnTouchListener接口是只要触摸(touch)状态改变。

我用的安卓模拟器很容易出现触摸触发多次监听事件,所以改用了方案二。

解决方案二:

对焦点改变和点击事件同时设置监听。setOnClickListener&setOnFocusChangedListener。

如下所示:

class MyFocusChangeListener implements View.OnFocusChangeListener
	{

		public void onFocusChange(View arg0, boolean arg1)
		{
			// TODO Auto-generated method stub
			if (arg1)//需要留意这个句,不然当焦点切换到其他控件时,会触发下面的语句。
			{
				hideIM(arg0);//隐藏键盘
				switch (arg0.getId())
				{
					case R.id.applydate:
						//EditText applyText = (EditText) findViewById(R.id.applydate);
						new MyClickListener().datePick(applyText);
						break;
					case R.id.diagnosedate:
						//EditText diagnoseText = (EditText) findViewById(R.id.diagnosedate);
						new MyClickListener().datePick(diagnoseText);
						break;
					default:{}
						break;
				}
			}
			
		}
	}

解决方案三:

在布局文件中设置android:focusable=“false”;或者EditText.setInputType(InputType.TYPE_NULL);不会弹出输入法

此时它不会获得焦点,所以不用对焦点的改变进行监听。就可以直接单独监听clickListener了。


个人认为方案三为最佳解决方案,代码量可以减少一半。

ps:

<!-- 编辑框显示android:background="@android:drawable/editbox_background_normal"-->

android:background="@null",不显示编辑框。


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值