EditText 点击全选,再次点击取消全选
2016-12-09 14:05
267 查看
最近在开发浏览器碰到这么一个需求:点击地址栏的时候,需要全选并调出键盘,再次点击就取消全选显示光标。点击屏幕除地址栏其他位置时,键盘隐藏,隐藏光标。
大部分浏览器都是这样的逻辑,这样可以提高用户体验,减少操作。
代码很简单,这里我简化了逻辑,页面只有一个EditText。
布局文件如下:里面有两个属性需要注意
完整布局文件
**mainactivity.java
需要注意两个代码段
整个过程没什么好解释的,以上就是所有内容。
大部分浏览器都是这样的逻辑,这样可以提高用户体验,减少操作。
代码很简单,这里我简化了逻辑,页面只有一个EditText。
布局文件如下:里面有两个属性需要注意
android:focusable="true" android:selectAllOnFocus="true"
完整布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.edittexttest.MainActivity">
<EditText
android:id="@+id/edit"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true" android:selectAllOnFocus="true"
/>
</RelativeLayout>
**mainactivity.java
package com.example.edittexttest; import android.content.Context; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private EditText editText; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editText = (EditText) findViewById(R.id.edit); editText.setText("click to select all"); editText.clearFocus(); editText.setFocusableInTouchMode(false); editText.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { if (motionEvent.getAction() == MotionEvent.ACTION_UP) { editText.setFocusableInTouchMode(true); editText.requestFocus(); editText.setText("click to select all"); editText.selectAll(); } return false; } }); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { View v = getCurrentFocus(); if (isShouldHideInput(v, ev)) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); if (imm.isActive()) { imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } } return super.dispatchTouchEvent(ev); } // Necessary if (getWindow().superDispatchTouchEvent(ev)) { return true; } editText.clearFocus(); editText.setFocusableInTouchMode(false); return onTouchEvent(ev); } public boolean isShouldHideInput(View v, MotionEvent event) { if (v != null && (v instanceof EditText)) { int[] leftTop = { 0, 0 }; //get location of TextView v.getLocationInWindow(leftTop); int left = leftTop[0]; int top = leftTop[1]; int bottom = top + v.getHeight(); int right = left + v.getWidth(); if (event.getX() > left && event.getX() < right && event.getY() > top && event.getY() < bottom) { return false; } else { return true; } } return false; } }
需要注意两个代码段
editText.setFocusableInTouchMode(true); editText.requestFocus();
整个过程没什么好解释的,以上就是所有内容。
相关文章推荐
- 点击EditText全选内容
- jquery实现点击复选框,勾选所有复选框,再次点击取消全选
- 关于取消EditText默认获得焦点又不影响点击效果的办法
- Android Edittext点击全选输入框内容
- JavaScript实现单击全选 ,再次点击取消全选
- Android 中使用EditText 点击全选再次点击取消全选功能
- 利用Span实现TextView/EditText的灵活表现--改变字体外观,添加点击,超链接
- 取消自动获取焦点(默认进来焦点到edittext),取消进入呼出软件盘
- Android之edittext取消默认弹出软键盘
- 在Android中如何通过点击edittext之外的部分使软键盘隐藏
- android 代码设置editText的 drableRight和drableRight的点击事件
- Android.EditText点击时,隐藏系统弹出的键盘,显示出光标
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- android制,点击EditText时刻,隐藏系统软键盘,显示光标
- Android中如何取消调转界面后EditText默认获取聚焦问题
- Android点击EditText文本框之外任何地方隐藏键盘的解决办法
- 阻止点击numberpicker(edittext)时候弹出输入法
- Android取消EditText自动获取默认焦点
- 安卓EditText有时点击后无法自动弹出键盘的解决办法;TextWatcher多次调用问题
- 怎么处理edittext中的drawable点击事件?