当前位置: 首页 > 编程笔记 >

Android 中使用EditText 点击全选再次点击取消全选功能

酆俊远
2023-03-14
本文向大家介绍Android 中使用EditText 点击全选再次点击取消全选功能,包括了Android 中使用EditText 点击全选再次点击取消全选功能的使用技巧和注意事项,需要的朋友参考一下

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

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

代码很简单,这里我简化了逻辑,页面只有一个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();

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

 类似资料:
  • 我有一个自定义的吐司diplaying图像和一些文本。这个祝酒词足够大,几乎可以覆盖半个屏幕。它的持续时间为LENGTH_LONG,因为它包含很多信息。

  • 本文向大家介绍jQuery展示表格点击变色、全选、删除,包括了jQuery展示表格点击变色、全选、删除的使用技巧和注意事项,需要的朋友参考一下 看着书上的代码,自己敲了好一阵,发现自己优化后的代码比书上的更简洁,功能也更多,贴出来,留后用。 功能: 表格行点击变背景色、选择删除、全选删除、图片原图显示 效果显示: 代码贴上: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊

  • 我有一个带有EditText和按钮的活动。当用户单击EditText时,会显示键盘,他可以输入一些Text-很好。但是当用户单击按钮时,我希望EditText不再对焦,即键盘隐藏,直到用户再次单击EditText。 单击按钮后,如何“隐藏EditText的焦点”。我可以在按钮的OnClick方法中添加一些代码来实现这一点? 编辑: 顺致敬意,

  • 这份代码,现在有一个问题就是点击选择框,编辑器的光标就消失了,使用@click.prevent并不会成功 需要保留光标以及选中文本

  • 本文向大家介绍AngularJS 购物车全选/取消全选功能的实现方法,包括了AngularJS 购物车全选/取消全选功能的实现方法的使用技巧和注意事项,需要的朋友参考一下 刚学习angularJS,于是练习写了一个类似于购物车的全选/取消全选的功能,主要实现的功能有: 1、勾选全选checkbox,列表数据全部被勾选,取消同理,用ng-model实现双向绑定; 2、选中列表中的所有checkbox

  • 本文向大家介绍JavaScript实现复选框全选和取消全选,包括了JavaScript实现复选框全选和取消全选的使用技巧和注意事项,需要的朋友参考一下 JS网页–全选和取消全选,供大家参考,具体内容如下 表格,初始状态下复选框都是未选中状态,选中表头的复选框后,下面几个复选框变为选中状态,取消表头复选框选中状态后,下面几个复选框选中状态也随之取消;下面的几个复选框同时选中时,表头的复选框也随之选中