点击EditText可编辑,点击其他地方不可编辑

我是在Fragment中实现的,在网上查了,有的说要回调Activity的onTouch事件,通过实验直接在Fragment中即可。如下:

我的EditText在ScrollView,因为ScrollView本身已经设置onTouch事件,并不抛出,所以必须监听ScrollView的onTouch事件

开始和点击其他地方如图:

点击EditText时如图:

具体代码:

EditText:edtTxt_personal_nicknameScrollView:sv_personal

首先设置EditText的点击事件:

点击时触发可编辑

点击事件:

case R.id.edtTxt_personal_nickname:
			//昵称设置可编辑
			setEditTextEditable(edtTxt_personal_nickname, true);
			break;

  

  点击其他地方时事件:

sv_personal.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				//如果编辑框获得焦点
				if(edtTxt_personal_nickname.isFocused()){
					//设置编辑框不可见
					setEditTextEditable(edtTxt_personal_nickname, false);
					InputMethodManager imm=(InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
					imm.hideSoftInputFromWindow(edtTxt_personal_nickname.getWindowToken(), 0);
				}
				return false;
			}
		});

  

//设置昵称是否可编辑
	private void setEditTextEditable(EditText editText, boolean value){
		if (value) {
			editText.setFocusableInTouchMode(true);
			editText.requestFocus();
			editText.setGravity(Gravity.LEFT);
		}else {
			editText.setFocusableInTouchMode(false);
			editText.clearFocus();
			editText.setGravity(Gravity.CENTER);
		}
	}

  

时间: 2024-10-05 07:27:25

点击EditText可编辑,点击其他地方不可编辑的相关文章

Android 点击EditText编辑框清除hint预设字

MainActivity: /** * 点击EditText窗体后,清除预设字 * @author [email protected] * */public class MainActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) {  // TODO Auto-generated method stub  super.onCreate(savedInstanceState)

在android中如何通过点击edittext之外的部分使软键盘隐藏

我们知道在android中点击edittext框就会自动弹出软键盘,那怎么通过点击edittext之外的部分使软键盘隐藏呢?(微信聊天时的输入框就是这个效果,这个给用户的体验还是很不错的) 首先我们要先定义一个隐藏软键盘的工具类方法: 1 public static void hideSoftKeyboard(Activity activity) { 2 InputMethodManager inputMethodManager = (InputMethodManager) activity.g

手机调用系统的拍照和裁剪功能,如果界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。

code如下: //Longest common sequence, dynamic programming method void FindLCS(char *str1, char *str2) { if(str1 == NULL || str2 == NULL) return; int length1 = strlen(str1)+1; int length2 = strlen(str2)+1; int **csLength,**direction;//two arrays to recor

Android点击EditText文本框之外任何地方隐藏键盘的解决办法

1,实现方法一:通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/traceroute_rootview" android:layout_width="fill_parent" android:l

Android--点击EditText的时候弹出软键盘,点击EditText之外空白处软键盘消失

在android中点击EditText的时候会弹出软键盘,但当我们输入完毕或者想隐藏软键盘时,我们可以点击软键盘上的隐藏按钮,这种方法固然可行,但是为了提高用户体验,我们常常要实现这种功能:当输入完毕后想隐藏软键盘时我们通过直接点击EditText的之外的其他空白处就可以隐藏软键盘,这种做法明显比点击软键盘自身的隐藏按钮要方便的多. 要实现上述功能只需重写 public boolean onTouchEvent(MotionEvent event)方法,做相应软键盘隐藏的处理操作即可. Inpu

android在点击EditText的时候始终不弹出软件键盘

场景描述:正常情况下,当点击EditText时,软键盘会弹出来.现在的要求是当点击EditText时,弹日期选择对话框,选择的结果显示在EditText上.若不处理,当点击EditText时,软键盘和对话框都会弹出,显然用户会感觉到不爽. 解决办法,当点击EditText时: 1.存储当前的输入类型 2.设置输入类型为InputType.TYPE_NULL,禁止手机软键盘 3.还原原来的输入类型,因为这次操作完,还要允许用户修改. 4.弹出日期选择对话框,操作完后将结果显示到EditText上.

android系统中,点击EditText时,隐藏系统软键盘,显示光标

因为项目中要用自定义的随机键盘,所以必须得屏蔽系统软键盘,但是在4.0的测试系统来看,使用editText.setInputType(InputType.TYPE_NULL)方法固然能隐藏键盘,但是光标也会隐藏,所以无法使用. 3.0以下版本可以用editText.setInputType(InputType.TYPE_NULL)来实现.或者设置editText.setKeyListener(null)来实现.3.0以上版本除了调用隐藏方法setShowSoftInputOnFocus(fals

Vue - 实现双击显示编辑框;自动聚焦点击的显示框;点击编辑框外的地方,隐藏编辑框

实现这三个功能的踩坑记录. 1. 需求 在Vue中,有一个input, 双击时编辑文本,点击该input节点外的其他地方,则取消编辑. 那么这里有三个要实现的地方 第一是双击显示编辑框. 第二是自动聚焦点击的显示框. 第三是点击编辑框外的地方,隐藏编辑框. 一二点都是在startPipeLineNameEdit这个method中去实现. 2. 实现双击显示编辑框 思路: 使用两个span包含双击前和双击后的代码,用isEditingPipeLineName这个变量去控制显示与否.(PipeLin

[转]JQuery控制div外点击隐藏,div内点击不会隐藏

一直弄清楚这个效果如何实现,看了这篇博客的几行代码原来如此简单. 比如有个div其id为body,实现在div外点击隐藏,div内点击不隐藏,采用jQuery实现如下: $("#body").click(function(e) { $(this).show(); e.stopPropagation(); }); $(document).click(function(event) { $("#body").hide(); }); 如果div内点击隐藏,可采用jQuer