Android EditText 获得输入焦点 以及requestfocus()失效的问题

 最近做公司项目的时候,经常会遇到一个问题,就是我为某个控件如EditText设置requestfocus()的时候不管用,比如说登陆的时候,我判断下用户输入的密码,如果正确就登陆,错误就提示密码错误,并且输入框获取焦点,但是实际中确不起作用

package com.example.hfs.requestfocusdemo;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private EditText mUserName,mPassWord;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        initView();

    }

    private void initView() {
        mUserName= (EditText) this.findViewById(R.id.et_username);
        mPassWord= (EditText) this.findViewById(R.id.et_password);

        mPassWord.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        if (!"123456".equals(mPassWord.getText().toString())){
            Toast.makeText(this,"密码错误,请重新输入",Toast.LENGTH_SHORT).show();
            mPassWord.requestFocus();
        }else{
            startActivity(new Intent(this,MainActivity.class));
            Toast.makeText(this,"登陆成功",Toast.LENGTH_SHORT).show();
            finish();
        }
    }
}

  

原因

查资料分析了一下,可能是以下问题: 
Android加载刷新UI的时候,是从左到右,从上到下的顺序,正在加载的过程中,如果此时requestFocus(),的话,有可能此时还没把整个界面刷新好,导致requestFocus无效。

解决办法

找到原因后就有解决办法了,给他个延迟时间:

mPassWord.postDelayed(new Runnable() {
  @Override
  public void run() {
    mPassWord.requestFocus();
  }
}, 500);

  这样就解决了这个问题了

时间: 2024-10-26 08:10:23

Android EditText 获得输入焦点 以及requestfocus()失效的问题的相关文章

Android EditText实现输入表情

一.简介 editText是TextView的子类,TextView能用的工具EditText都能用,这里就是editText利用SpannableString的ImageSpan实现输入表情的功能 类结构图: 二.方法 1)EditText利用SpannableString的ImageSpan实现添加表情的方法 第一步:创建SpannableString对象spannableString SpannableString spannableString=new SpannableString("

android edittext在有焦点时,再次点击弹出软键盘,edittext会被挡住。

问题描述 android edittext在有焦点时,再次点击弹出软键盘,edittext会被挡住. android edittext在有焦点时,再次点击弹出软键盘,界面不会上移,edittext会被挡住.多谢大神了,有没有好一些的方法. 解决方案 Android的EditText在怎样获取焦点并弹出软键盘android edittext不弹出软键盘android EditText软键盘弹出控制 解决方案二: 方法很多,网上有介绍,比如你可以把你所有的元素都放到scrollview中 解决方案三

Android EditText限制输入字符的方法总结

Android EditText限制输入字符的方法总结 最近项目要求限制密码输入的字符类型, 例如不能输入中文.   现在总结一下EditText的各种实现方式,  以比较各种方法的优劣. 第一种方式:  设置EditText的inputType属性,可以通过xml或者Java文件来设置.假如我要设置为显示密码的形式,可以像下面这样设置: 在xml中,   Android:inputType="textPassword" 在java文件中,可以用 ev.setInputType(Inp

Android EditText限制输入字符类型的方法总结

Android EditText限制输入字符类型的方法总结 前言: 最近的项目上需要限制EditText输入字符的类型,就把可以实现这个功能的方法整理了一下: 1.第一种方式是通过EditText的inputType来实现,可以通过xml或者Java文件来设置.假如我要设置为显示密码的形式,可以像下面这样设置: 在xml中 Android:inputType="textPassword" 在java文件中,可以用 myEditText.setInputType(InputType.TY

Android EditText限制输入字数的方法

本文实例讲述了Android EditText限制输入字数的方法.分享给大家供大家参考,具体如下: //新浪微博字数限制 private static final int WEIBO_CONTENT_LENGTH_LIMITED = 140; //添加微博内容edittext mInputEditText.addTextChangedListener(mTextWatcher); private TextWatcher mTextWatcher = new TextWatcher() { pri

Android EditText实现输入金额类型详解

前言 众所周知,Android中的editText默认的属性里面是没有金额类型的,所以要实现这个功能我们就必须自己动手丰衣足食.下面话不多说了,来一起看看详细的介绍吧. 一.EditText只允许输入数字.小数点. 首先要知道金额有两部分构成,整数部分和小数部分,要实现只输入数字和小数点很简单.自己查能很容易查到. 把type设置成InputType.TYPE_NUMBER_FLAG_DECIMAL|InputType.TYPE_CLASS_NUMBER 就行 那这样做有个缺点,小数部分可以有很

Android EditText 对输入字数和内容范围进行限制

在做定制机时,对光敏值进行范围控制时,以及对区号输入时遇到对输入字数以及输入内容的显示.找了好多方法,终于找到了几种方法其中EditText的addTextChangedListener功不可没.例如对光敏值要在0到61之间.大于61时要在输入框中自动变为61.代码如下: edt.addTextChangedListener(new TextWatcher() { String nums = null; @Override public void afterTextChanged(Editabl

android-Android EditText 无法输入中文

问题描述 Android EditText 无法输入中文 请问 EditText 中在那儿查看中文输入被禁用了啊, 我的 无法输入中文,也无法长按之后选择输入法,软键盘也没弹出来呢. 先感谢各位的解答,谢谢~ 解决方案 http://zhidao.baidu.com/link?url=Ua1RPNc87Y81ycltiKbYElZm_PSFhoj2L4Us4WDiaHe_4O39T3Uds2-b5Sz0DjwYEmxZX1vKieH0HtlXzrqo6yrumGC3lgnr2hT7le1eJB_

android edittext点击获得焦点可放大,失去焦点恢复原样

问题描述 android edittext点击获得焦点可放大,失去焦点恢复原样 点击之前是这样之后变成这样求android大牛指点 解决方案 应该可以绑定一个监听,获取焦点的时候改变大小 解决方案二: 获得焦点可以监听的,然后自己改变高度 解决方案三: 点击后调用一个函数,这个函数内部动态改变EditText的大小,比如直接设置width和height,或者重新设置params也行的