浅谈关于android软键盘弹出问题

问题:

今天公司项目处理一个软键盘弹出的逻辑,要求点击按钮之后弹出软键盘。

实现代码如下:

//获取焦点
 editText.setFocusable(true);
 editText.setFocusableInTouchMode(true);
 editText.requestFocus();
//弹出软键盘
 InputMethodManager imm = (InputMethodManager) editText.getContext( ).getSystemService(Context.INPUT_METHOD_SERVICE);
 imm.showSoftInput(editText,0);

在正常的一个activity按照上面是可以实现的,但是我遇到的问题是加载数据显示之后点击按钮改变了布局的显示状况,然后再想弹出软键盘,但是一直无法弹出键盘
通过查阅网上资料,给出的解析是在布局加载的过程中是无法弹出软键盘的,所以需要适当的延迟一下软键盘的弹出

最终代码如下:

//获取焦点
 editText.setFocusable(true);
 editText.setFocusableInTouchMode(true);
 editText.requestFocus();
//延迟弹出软键盘
 Timer timer = new Timer();
  timer.schedule(new TimerTask(){
    @Override
    public void run() {
      InputMethodManager imm = (InputMethodManager) editText.getContext( ).getSystemService(Context.INPUT_METHOD_SERVICE);
      imm.showSoftInput(editText,InputMethodManager.SHOW_FORCED);
     }
     }, 300);

使用上面代码就实现了强制弹出软键盘的问题.

另附其他软键盘常用方法:

1.如果软键盘已弹出则隐藏,反之弹出.

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

2.隐藏软键盘

 InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );
    if ( imm.isActive( ) ) {
      imm.hideSoftInputFromWindow( v.getApplicationWindowToken( ) , 0 );

3.显示软键盘

 InputMethodManager imm = ( InputMethodManager ) v.getContext( ).getSystemService( Context.INPUT_METHOD_SERVICE );
    imm.showSoftInput(v,InputMethodManager.SHOW_FORCED); 

ps:其实通过系统服务取得的InputMethodManager 应该需要判断是否为null,这里偷懒了,大家记得判断一下

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 解决Android软键盘弹出覆盖h5页面输入框问题

    之前我们在使用vue进行 h5 表单录入的过程中,遇到了Android软键盘弹出,覆盖 h5页面 输入框 问题,在此进行回顾并分享给大家: 系统:Android 条件:当输入框在可视区底部或者偏下的位置 触发条件:输入框获取焦点,弹出软键盘 表现:软键盘 覆盖 h5页面中的输入框 问题分析: 1.发现问题:当前页面中box为flex布局,内容为上下固定高,中间自适应(中间区域内容过多会出现滚动条,input框在wrapper的底部),input获取焦点,手机键盘弹出,input未上移到可视区内,

  • Android开发之弹出软键盘工具类简单示例

    本文实例讲述了Android开发之弹出软键盘工具类.分享给大家供大家参考,具体如下: package com.maobang.imsdk.util; import android.content.Context; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import java.util.Timer; import java.util.TimerTask; /** * 让

  • Android仿支付宝自定义密码输入框及安全键盘(密码键盘)

     0.前言 之前做过的项目里有运用到一个支付场景:用户办理业务时需要输入交易密码,并且可根据平台下发的支付方式进行选择.这与支付宝的密码输入方式十分相似,如果使用Android系统或者第三方软件的键盘,会有密码泄露的风险.因此,大多数的应用软件使用的是自定义的密码输入框及安全键盘. 由于密码输入方式需要实现一个从底部弹出的效果,因此总体上决定采用BottomSheetDialog来进行封装,同时为了提高安全性,还应该随机生成键盘上的数字,界面如下图所示:   首先新建一个PasswordInpu

  • 5种方法完美解决android软键盘挡住输入框方法详解

    在开发中,经常会遇到键盘挡住输入框的情况,比如登录界面或注册界面,弹出的软键盘把登录或注册按钮挡住了,用户必须把软键盘收起,才能点击相应按钮,这样的用户体验非常不好.像微信则直接把登录按钮做在输入框的上面,但有很多情况下,这经常满足不了需求.同时如果输入框特别多的情况下,点击输入时,当前输入框没被挡住,但是当前输入框下面的输入框却无法获取焦点,必须先把键盘收起,再去获取下面输入框焦点,这样用户体验也非常不好,那有什么办法呢?  系统的adjustResize和adjustPan有什么区别,他们使

  • Android 键盘开发知识点总结

    先废话一下,说说开发键盘的原因:像理财产品.银行等app客户端登录时,尤其是要输入密码时,会屏蔽掉系统默认输入法,改为自己的输入法!这个是考虑安全,以及防止被输入法软件记录密码等问题!所以,安全性极高的app都会要求密码等都用自己的输入法,这就有开发的需求 了! 言归正传:开发这种软件盘,从什么地方开始着手呢? 步骤1: 先看Android给我们提供的Demo 关于软键盘的Demo,在以下目录中能找到: ..\samples\android-22\legacy\SoftKeyboard 步骤二:

  • 解决Android Studio 格式化快捷键和QQ 锁键盘快捷键冲突问题

    今天,简单讲讲android studio格式化的快捷键和qq快捷键之间的冲突的处理. 每次,当我打开QQ使用android studio格式化的快捷键Ctrl + Alt +L时,总是出现QQ 锁键盘的提示,这个冲突之前我是把QQ关掉,然后再格式化代码.可是这样就无法收到QQ的消息,所以在网上查找了资料,终于解决了问题.这里记录一下. 解决办法:去掉QQ里面 锁键盘快捷键 (1) 在QQ底部 点击 系统设置 (2) 选择 热键 -> 点 设置热键 (3) 在热键 里面 看到 锁定QQ Ctrl

  • Android开发之超实用的系统管理工具类【SD卡,网络,uri,屏幕,网络,软键盘,文本,进程等】

    本文实例讲述了Android开发之超实用的系统管理工具类.分享给大家供大家参考,具体如下: 这是一个系统管理工具类,管理sd卡,判断网络,uri转换,获取屏幕宽高,获取网络类型,隐藏软键盘,复制文本到粘贴板,获取状态栏高度,获取当前进程等. 上代码 import java.io.File; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.app.Activity

  • Android实现键盘弹出界面上移的实现思路

    1.首先说一下思路: 基本就是结合layout中ScrollView视图和AndroidManifest.xml中activity中的android:windowSoftInputMode属性配置实现: 2.要了解android:windowSoftInputMode相应的可以配置项: activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性. 这个属性能影响两件事情: 1.当有焦点产生时,软键盘是隐藏还是显示 2.是否减少活动主窗口大小以便腾

  • 浅谈关于android软键盘弹出问题

    问题: 今天公司项目处理一个软键盘弹出的逻辑,要求点击按钮之后弹出软键盘. 实现代码如下: //获取焦点 editText.setFocusable(true); editText.setFocusableInTouchMode(true); editText.requestFocus(); //弹出软键盘 InputMethodManager imm = (InputMethodManager) editText.getContext( ).getSystemService(Context.I

  • Android软键盘弹出时的界面控制方法

    本文实例讲述了Android软键盘弹出时的界面控制方法.分享给大家供大家参考,具体如下: 有时候androidactivity弹出软键盘后布局改变 下面有三种模式可以改变软键盘弹出以后的显示形式 模式一:压缩模式软键盘弹出以后,会压缩原先的大小 我们可以在AndroidManifet.xml中对Activity进行设置.如: android:windowSoftInputMode="stateUnchanged|adjustResize" 模式二:平移模式 软键盘弹出以后,不会压缩原先

  • Android 软键盘弹出隐藏挤压界面等各种问题小结

    Android中软键盘的使用是非常多的,下面为软键盘常用的设置: 1.横屏时,点击输入框出现全键盘解决方案: 在EditText.searchview等控件中加 android:imeOptions="flagNoExtractUi" 2.竖屏时,安卓会出现半屏. case1:你的输入框处于中下的位置,这样的话,键盘可能挡住输入框. 解决方法:在manifest中对activity设置 android:windowSoftInputMode="adjustResize&quo

  • Android 软键盘弹出时把原来布局顶上去的解决方法

    键盘弹出时,会将布局底部的导航条顶上去. 解决办法: 在mainfest.xml中,在和导航栏相关的activity中加: <activity android:name=".filing.MainActivity" android:windowSoftInputMode="adjustResize|stateHidden" /> windowSoftInputMode 属性解释: 活动的主窗口如何与包含屏幕上的软键盘窗口交互.这个属性的设置将会影响两件事

  • Android判断软键盘弹出并隐藏的简单完美解决方法(推荐)

    最近项目中有一个编辑框,下面是个ListView.在触发编辑框弹出软键盘后,ListView还能滑动,并且ListView的item还能响应单击.这样的体验效果很不好.于是便想在滑动或单击item时判断键盘是否弹出,若弹出,则把它隐藏. 网上一搜,发现Android并没有直接提供软键盘的弹出与隐藏判断,一些解决方案诸如判断父控件的高度或者判断 if(getWindow().getAttributes().softInputMode==WindowManager.LayoutParams.SOFT

  • 手机软键盘弹出时影响布局的解决方法

    移动端软键盘弹出时影响布局该如何解决 1)前段时间作的移动端页面,因为高度只有1页所以用了height:100%;width:100%; ios下点击输入框弹出软键盘时,布局没有大影响. 当输入框可能被软键盘压到时,在一部分安卓下却出了问题,华为自带浏览器和UC会有布局上的问题. 原因可能是因为,软键盘弹出时,改变了height,使height:100%,不能达到原来的高度. 解决办法: $(document).ready(function () { $('body').height($('bo

  • 解决react-native软键盘弹出挡住输入框的问题

    这是效果: 代码: import React, {Component} from 'react'; import { View, Text, Button, StyleSheet, TextInput, ScrollView, KeyboardAvoidingView, Dimensions } from 'react-native'; import { StackActions, NavigationActions, withNavigation } from 'react-navigatio

  • uniapp中input聚焦禁止软键盘弹出方法

    需求:在进入页面时需要input聚焦,但是不弹出软键盘 方法一:使用uniapp自带方法uni.hideKeyboard()来隐藏软键盘 方法二:使用readonly属性规定输入字段为只读 方法三:使用document.activeElement.blur()移开焦点 方法四:通过div模拟input来实现 以上方法网上都有,但是都没有解决我的需求,下面是我使用的方法 方法五:通过定时器来实现隐藏键盘 一般项目通常使用方法一就可以解决,或者日期类型也可以通过以上方法来实现. 我们项目有物理按键,

  • Android监听软键盘弹出与隐藏的两种方法

    需求: 现在有一个需求是点击一行文本框,弹出一个之前隐藏的输入框,输入完成后按返回键或者其他的东西隐藏键盘和输入框,将输入框的内容填充到文本框中. 实现: 拿到这个需求的第一反应就是写一个监听来监听键盘的显示和隐藏来控制输入框的显示和隐藏,控制文本框中的内容. 所以我做了如下操作: 指定android:windowSoftInputMode="adjustResize|stateAlwaysHidden"这个的做法是为了让键盘弹出时改变布局. 让Activity实现Layoutchan

随机推荐