您的位置:首页 > 其它

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

2014-10-13 08:49 716 查看
问题: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",不显示编辑框。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐