在安卓项目开发中,我们经常会遇到一些对EditText的处理问题,包括对EditText的焦点的改变,我们需要结合实际情况对其进行获得焦点,打开输入法和失去焦点,关闭输入法的交互操作。

我在这里介绍一种简单的处理方式,希望在看了我的博文之后对您的需求有所帮助。

上图,首次进入界面

上图,点击输入框

上图,点击确定按钮

首先,编写布局文件:

layout_edittext_focus.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent" >

android:id="@+id/focus_linear_root"

android:layout_width="match_parent"

android:layout_height="50dp"

android:layout_marginTop="50dp"

android:focusable="true"

android:focusableInTouchMode="true"

android:orientation="horizontal"

android:paddingBottom="5dp"

android:paddingLeft="10dp"

android:paddingRight="10dp" >

android:id="@+id/focus_editText_input"

android:layout_width="0dp"

android:layout_height="match_parent"

android:layout_weight="1"

android:hint="请输入"

android:paddingLeft="10dp"

android:singleLine="true" />

android:id="@+id/focus_textView_ok"

android:layout_width="wrap_content"

android:layout_height="match_parent"

android:layout_marginLeft="15dp"

android:layout_marginRight="5dp"

android:gravity="center"

android:text="确定"

android:textSize="18sp" />

android:id="@+id/focus_textView_explain"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_below="@id/focus_linear_root"

android:padding="20dp"

android:textSize="11sp" />

核心代码:

给EditText所在的父类布局添加如下属性:

android:focusable="true"

android:focusableInTouchMode="true"

将焦点转移到EditText的父类布局上,EditText在初始化的时候就不会获取到焦点

然后,编写java代码:

EditTextFocusActivity.java

package com.example.listdelectdemo;

import android.os.Bundle;

import android.app.Activity;

import android.content.Context;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.inputmethod.InputMethodManager;

import android.widget.EditText;

import android.widget.TextView;

/**

* EditText焦点处理页

*/

public class EditTextFocusActivity extends Activity implements OnClickListener {

/**

* 输入框

*/

private EditText focus_editText_input;

/**

* 确定按钮

*/

private TextView focus_textView_ok;

/**

* 说明

*/

private TextView focus_textView_explain;

/**

* 输入法管理器

*/

private InputMethodManager mInputMethodManager;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.layout_edittext_focus);

initUtil();

initView();

}

/**

* 初始化必须工具

*/

private void initUtil() {

//初始化输入法

mInputMethodManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);

}

/**

* 控件初始化

*/

private void initView() {

focus_editText_input = (EditText) findViewById(R.id.focus_editText_input);

focus_editText_input.setOnClickListener(this);

focus_textView_ok = (TextView) findViewById(R.id.focus_textView_ok);

focus_textView_ok.setOnClickListener(this);

focus_textView_explain = (TextView) findViewById(R.id.focus_textView_explain);

String explain = "说明:\n\n1.首次进入界面时,EditText不会获取焦点,没有光标\n\n"

+ "2.当点击EditText时,EditText重新获取焦点,光标出现,并吊起输入法\n\n"

+ "3.输入完成后,点击确定,EditText失去焦点,失去光标并关闭输入法\n\n"

+ "4.重新点击EditText时,即可重复操作";

focus_textView_explain.setText(explain);

}

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.focus_editText_input://输入框

focus_editText_input.setFocusable(true);//设置输入框可聚集

focus_editText_input.setFocusableInTouchMode(true);//设置触摸聚焦

focus_editText_input.requestFocus();//请求焦点

focus_editText_input.findFocus();//获取焦点

mInputMethodManager.showSoftInput(focus_editText_input, InputMethodManager.SHOW_FORCED);// 显示输入法

break;

case R.id.focus_textView_ok://确定按钮

focus_editText_input.setFocusable(false);//设置输入框不可聚焦,即失去焦点和光标

if (mInputMethodManager.isActive()) {

mInputMethodManager.hideSoftInputFromWindow(focus_editText_input.getWindowToken(), 0);// 隐藏输入法

}

break;

}

}

}

核心代码:

在EditText的点击事件中添加如下代码:

focus_editText_input.setFocusable(true);//设置输入框可聚集

focus_editText_input.setFocusableInTouchMode(true);//设置触摸聚焦

focus_editText_input.requestFocus();//请求焦点

focus_editText_input.findFocus();//获取焦点

作用在于让EditText在点击的时候获取到焦点。

然后对输入法做显示处理。

mInputMethodManager.showSoftInput(focus_editText_input, InputMethodManager.SHOW_FORCED);// 显示输入法

要使EditText失去焦点,只需要在其他的监听事件中添加如下代码,设置不可聚集,关闭输入法即可:

focus_editText_input.setFocusable(false);//设置输入框不可聚焦,即失去焦点和光标

if (mInputMethodManager.isActive()) {

mInputMethodManager.hideSoftInputFromWindow(focus_editText_input.getWindowToken(), 0);// 隐藏输入法

}

这就是一个简单EditText焦点改变处理方法。

文章中存在的某些不足之处,还望提出指导性意见。

edittext 选中焦点在最后_安卓开发中EditText的焦点改变处理(获取焦点和失去焦点交互变化)...相关推荐

  1. 安卓开发中ToggleButton按钮的使用

    ToggleButton(开关按钮)是Android系统中比较简单的一个组件,是一个具有选中和未选择状态双状态的按钮,并且需要为不同的状态设置不同的显示文本.下面以一个简单的控制室内设备的开关为例来介 ...

  2. 安卓开发中遇到的奇奇怪怪的问题(三)

    本文已授权微信公众号:鸿洋(hongyangAndroid)原创首发. 距离上一篇 安卓开发中遇到的奇奇怪怪的问题(二)又过了半年了,转眼也到年底了,是时候拿出点干货了.这篇算是本年度个人印象最深的几 ...

  3. 安卓开发中的占位符在布局XML中使用

    安卓开发中的占位符在布局XML中使用 刚开始学Android,实现用户注册登录功能EditText使用占位符. == 普通的英文半角空格   ==   ==   == no-break space ( ...

  4. Android安卓开发中图片缩放讲解

    安卓开发中应用到图片的处理时候,我们通常会怎么缩放操作呢,来看下面的两种做法: 方法1:按固定比例进行缩放 在开发一些软件,如新闻客户端,很多时候要显示图片的缩略图,由于手机屏幕限制,一般情况下,我们 ...

  5. Android Studio安卓开发中使用json来作为网络数据传输格式

    如果你是在安卓开发中并且使用android studio,要使用json来作为数据传输的格式,那么下面是我的一些经验. 一开始我在android studio中导入那6个包,那6个包找了非常久,因为放 ...

  6. 安卓开发中的USB转串口通讯

    安卓开发中的USB转串口通讯 本文使用GitHub上开源的"hoho.android.usbserial"USB串口库.该库基于"Android USB Host API ...

  7. 安卓开发中的重力感应传感器

    2019独角兽企业重金招聘Python工程师标准>>> 安卓开发中拥有多种传感器,google提供了11种传感器供应用层使用:加速度.磁力.方向.陀螺仪.光线.压力(返回当前压强). ...

  8. 安卓开发中非常炫的效果集合

    安卓开发中非常炫的效果集合 这几天开发的时候,想做一些好看而且酷炫的特效,于是又开始从网上收集各种特效资源.下面给大家一些我喜欢的把,附代码,喜欢的看源代码,然后加到自己项目去把!! 一个开源项目网站 ...

  9. 豁然开朗篇:安卓开发中关于线程那些事(下篇)

    彻底搞懂线程这一块,看这一篇就够了 前言 本系列详细讲解并发的知识,从基础到底层,让大家彻底搞懂线程和锁的原理,当然里面会涉及到一些内存结构的知识,所以如果为了更好地阅读效果,也可以先去看以下这两篇: ...

最新文章

  1. SoJpt Boot 2.3-3.8 发布,Spring Boot 使用 Jfinal 特性极速开发
  2. ComponentArt TreeView for ASP.NET - Core Features
  3. mysql数据库模型生成表_PowerDesigner逆向生成MYSQL数据库表结构总结
  4. openvswitch2.8.1 centos7.4 源码编译安装
  5. linux -- control service and daemon process
  6. MoveNet 姿态估计,树莓派上也能跑!
  7. python三维圆曲面_python – matplotlib中的曲面和三维轮廓
  8. 一阶低通滤波器算法实现
  9. commands out of sync mysql,MySQL-python: Commands out of sync
  10. mongodb的安装和sql操作
  11. 《我们应当怎样做需求分析》阅读笔记
  12. 你好,Wi-Fi 6
  13. 机器学习学习整理(二)对数几率回归与支持向量机
  14. 【高级持续性威胁追踪】当黑客不讲武德,安全专家也容易被骗
  15. ECU重编程流程(UDS)
  16. cocos2d-x 植入广告(一) 百度横屏、插屏广告
  17. 【千律】OpenCV基础:图像阈值分割 -- 自适应阈值分割 -- 代码实现
  18. 下载安装Psychtoolbox详细教程【Windows10+Matlab R2020a】
  19. 当电摇家族进入C++(二)
  20. Java:实现 按概率生成随机数算法(附完整源码)

热门文章

  1. NIPS 2018 论文解读集锦(11月28日更新)
  2. Active Noise Cancelling-主动噪声消除
  3. 责任链(Chain of Responsibility Pattern)
  4. ES6中的模板字符串---反引号``
  5. 简历中的项目如何体现实战能力? 如何有技巧地描述你做过的 project?
  6. python文件处理练习
  7. golang文件操作
  8. openlayer 3 在layer上添加feature
  9. 一篇小的随笔,关于记忆算法和概念
  10. HTML学习笔记2—列表与清单