最近在开发浏览器碰到这么一个需求:点击地址栏的时候,需要全选并调出键盘,再次点击就取消全选显示光标。点击屏幕除地址栏其他位置时,键盘隐藏,隐藏光标。

大部分浏览器都是这样的逻辑,这样可以提高用户体验,减少操作。

代码很简单,这里我简化了逻辑,页面只有一个EditText。

布局文件如下:里面有两个属性需要注意

android:focusable="true"

android:selectAllOnFocus="true"

完整布局文件

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">

android:id="@+id/edit"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:focusable="true"

android:selectAllOnFocus="true"

/>

**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();

以上所述是小编给大家介绍的Android 中使用EditText 点击全选再次点击取消全选功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

点击编辑框全选内容java_Android 中使用EditText 点击全选再次点击取消全选功能相关推荐

  1. 点击编辑框全选内容java,js实现鼠标点击文本框自动选中内容的方法

    本文实例讲述了js实现鼠标点击文本框自动选中内容的方法.分享给大家供大家参考.具体如下: 这里使用JS实现鼠标点击时自动选中文本框文本的效果,相信许多朋友都遇到这种功能的,就是当我们点击文本框的时候, ...

  2. DialogFragment常见问题(黑色棱角、点击编辑框外关闭软键盘..)

    1.设置对话框外部的背景为完全透明: 在onStart()方法中加入以下代码: @Overridepublic void onStart() {super.onStart();/*** 将对话框外部( ...

  3. java之点击一次之后失效_JavaScript 事件绑定只能执行一次了,再次点击就变得无效 ,求助怎么回事...

    点击收藏,弹出提示框,询问是否取消收藏,然后点击提示框里面的关闭按钮,关闭提示框后.再次点击那个触发事件的 收藏按钮就会无效 图片描述 var collectionBtn = document.que ...

  4. 点击文本框搜索,出现在下拉列表中

    输入用户名发送请求到后台,将用户的custId返回回来,保存到form中,再提交.根据custId去搜寻 $("#custNameButton").click(function ( ...

  5. html 编辑框 空值变红,HTML中关于表单的提交和输入的值是否为空

    文章出处:http://blog.csdn.net/lvhuiyang/article/details/53192277 //未填写的input 边框变红色 $('input[type=text]') ...

  6. html清空复选框的值,html,删除复选框选中的内容

    首先是选中复选框,可以自己单击一个个的选,这个就不用多说了吧!也可以批量操作,如用全选按钮,主要是设置复选框的.checked值.可以通过调用javascript函数来实现. 方法如下: 复选框的定义 ...

  7. JS点击编辑内容并保存

    一个标签,点击按钮使内容变成可编辑状态,然后使用保存数据.这个是点击编辑按钮使得标签内容替换为文本域来实现的.

  8. MFC的基本控件的使用~编辑框(Edit Controll)的使用

    简单介绍一下编辑框的比较常用的属性: multiline  :多行显示 WantReturn:使用回车 Auto HScroll:水平 无限延伸 Auto VScroll:垂直无限延伸 Vertica ...

  9. Android EditText 编辑框 获取焦点的方法

    EditText 获取焦点的方法为:setOnFocusChangeListener 下面写一个EditText 编辑框获取焦点之后改变背景颜色 主要代码如下 public class MainAct ...

最新文章

  1. 详细介绍Python中的“魔术方法“__XXX___; 概述__str__()方法;__new__()方法; 三. __ new__ 和__init__的区别
  2. java异常处理试题答案_JAVA异常处理试题及答案
  3. WebKit Frame对象分析
  4. 在OEL5上安装配置Oracle Gird Control 10.2.0.5
  5. Java中的字符串分割
  6. 阿里巴巴投资以色列风投JVP 规模数千万美元
  7. Signal处理中的函数可重入问题
  8. 从90年代的SRNN开始,纵览循环神经网络27年的研究进展
  9. util包的常用类及其方法(上)
  10. mysql之jdbc连接数据库和sql注入的问题
  11. 【网络】HTTP 协议中 URI 和 URL 有什么区别?
  12. 转载:LTE中的各种ID含义
  13. 【bzoj2959】长跑【LCT+并查集】
  14. 计算机科学期刊是a类还是b类,期刊的A类B类C类什么意思
  15. 360全景拼接 opencv_GitHub - hellojiawa/AndroidPanoDemo: 使用Opencv全景照片拼接
  16. 我的世界java蜜蜂_在最新的《我的世界》Java版更新中 蜜蜂是所有的热点
  17. linux中权限sudo,Linux中sudo权限(下)
  18. 微信公众号【程序员杂货铺】
  19. 021淘宝轮播图制作
  20. JDK8-十大新特性-附demo

热门文章

  1. df添加一行 python_Python为输出的数据绘制表格
  2. 操作多台_一支热电偶能否连接多台显示仪表
  3. python中八皇后如何运算的_python解决八皇后算法
  4. C++17新特性之std::string_view
  5. java中字典算法_Java字典生成算法讲解
  6. 学习Spring Boot:(八)Mybatis使用分页插件PageHelper
  7. c语言c98标准,1.3.2 C语言标准
  8. java开发利器 源码_Java开发的利器: 反编译工具 JD-GUI
  9. 大于小于优化_架构 - 以MySQL为例,详解数据库索引原理及深度优化
  10. 资金时间价值的计算机应用视频讲解,第八章资金时间价值与方案经济比选20161018讲解.ppt...