Android APP 隐藏系统软键盘的方法

news2024/9/28 19:22:27

1.场景描述:

1) APP项目中经常会开发自定义软键盘;同时在使用EditText时,也会常常遇到自动弹出系统自带的软键盘,与自定义的软键盘产生冲突的情况;此时需要禁止EditText自动弹出系统软键盘,从而使自定义的软键盘正常显示。

2. 功能实现

1)首先,在清单文件AndroidManifest.xml中,给EditText所在的Activity页面设置属性

 android:windowSoftInputMode="stateAlwaysHidden"

最后,找到EditText所在的Activity,在初始化时设置方法

editText.setShowSoftInputOnFocus(false);

 

在开发中经常会遇到这样的问题,进入一个含Edittext的Activity后总是会自动弹出软件盘。但是有时候我们又不想让它弹出,因为影响美观,而且用户可能也会反感。最好的做法是刚进入时不让弹出,在用户输入的时候才让弹出,把主动权交个用户是对用户最大的尊重。

禁止弹出软键盘输入法

代码:

1

2

3

<activity

    android:name=".MainActivity"

    android:windowSoftInputMode="stateHidden"/>

发现用stateAlwaysHidden也可以禁止弹出软键盘

1

2

3

<activity

    android:name=".MainActivity"

    android:windowSoftInputMode="stateAlwaysHidden"/>

stateHidden和stateAlwaysHidden的区别

既然stateHidden和stateAlwaysHidden都可以实现禁止弹出软键盘,那这两者到底有什么区别呢?网上看很多人都说得不清不楚,还不如自己上Android官网看最权威

发现官网的说明还是有点晦涩难懂的,我以我的理解说明下:

  • stateHidden:当用户进入Activity后保证是隐藏软键盘的,但是如果是从另一个页面返回该页面就不能保证了。比如说用户进入A页面,然后在输入框输入内容,未收起软键盘直接进入B页面,再从B页面返回A页面,此时A页面中软键盘还是显示的。又或者是用户由A页面进入B页面,在B页面弹出软键盘,未收起直接返回A页面,此时A页面中软键盘还是显示的。
  • stateAlwaysHidden:当用户刚进入Activity后软键盘也是隐藏的。与stateHidden的区别是,还是以上面的例子来说明,比如说用户进入A页面,然后在输入框输入内容,未收起软键盘直接进入B页面,再从B页面返回A页面,此时A页面中软键盘是收起来的。又或者是用户由A页面进入B页面,在B页面弹出软键盘,未收起直接返回A页面,此时A页面中软键盘是收起来的。

代码中设置softInputMode

当然,我们也可以在Activity的onCreate中设置softInputMode,如下代码所示,和在Manifest中设置是等价的

1

2

3

4

// 等价于android:windowSoftInputMode="stateHidden"

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

// 等价于android:windowSoftInputMode="stateAlwaysHidden"

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130188.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

汽车电子专有名词与相应技术

1.EEA &#xff08;Electronic & Electrical Architecture 电子电气架构&#xff09; EEA在宏观上概括为物理架构与逻辑架构的结合&#xff0c;微观上通过众多电子元器件的协同配合&#xff0c;或集成式或分布式的系统级电子电气架构&#xff0c;具体详见专栏 新能源汽车电…

volatile 关键字有什么用?它的实现原理是什么?

volatile volatile是Java中的一个关键字&#xff0c;用于修饰变量&#xff0c;表示该变量是“易变的”&#xff08;Volatile&#xff09;。 volatile 关键字有两个作用&#xff1a; 可以保证在多线程环境下共享变量的可见性。 通过增加内存屏障防止多个指令之间的重排序。 可见…

【图结构从入门到应用】图的表示和遍历,图搜索算法详解与示例

1图的概念 图是一种非常常见的数据结构&#xff0c;用于表示对象之间的关系。在计算机科学中&#xff0c;有许多不同的图类型&#xff0c;包括有向图&#xff08;Directed Graph&#xff09;和无向图&#xff08;Undirected Graph&#xff09;。图通常由节点&#xff08;顶点&a…

vscode json文件添加注释报错

在vscode中创建json文件&#xff0c;想要注释一波时&#xff0c;发现报了个错&#xff1a;Comments are not permitted in JSON. (521)&#xff0c;意思是JSON中不允许注释 以下为解决方法&#xff1a; 在vscode的右下角中找到这个&#xff0c;点击 在出现的弹窗中输入json wit…

Python 自动化(十五)请求和响应

准备工作 将不同day下的代码分目录管理&#xff0c;方便后续复习查阅 (testenv) [rootlocalhost projects]# ls mysite1 (testenv) [rootlocalhost projects]# mkdir day01 day02 (testenv) [rootlocalhost projects]# cp -rf mysite1/ day01/ (testenv) [rootlocalhost proj…

vue路径中“@/“代表什么

举例&#xff1a; <img src"/../static/imgNew/adv/tupian.jpg"/>其中&#xff0c;/是webpack设置的路径别名&#xff0c;代表什么路径&#xff0c;要看webpack的build文件夹下webpack.base.conf.js里面对于是如何配置&#xff1a; 上图中代表src,上述代码就…

KDChart3.0编译过程-使用QT5.15及QT6.x编译

文章目录 参考原文一、下载KDChart源文件二、下载安装CMake三、编译Qt5.15.0 编译Qt6.x 编译使用Qt6.X编译的直接看这最快 四、使用测试方法一&#xff1a;测试方法二&#xff1a; 参考原文 记录我的KDChart3.0编译过程 系统&#xff1a;win11&#xff0c;Qt5.15 &#xff0c;编…

Android View拖拽/拖放DragAndDrop自定义View.DragShadowBuilder,Kotlin(2)

Android View拖拽/拖放DragAndDrop自定义View.DragShadowBuilder&#xff0c;Kotlin&#xff08;2&#xff09; import android.graphics.Canvas import android.graphics.Point import android.graphics.drawable.ColorDrawable import android.os.Bundle import android.util…

关于前端如何下载后端接口返回content-type为application/octet-stream的文件

关于前端如何下载后端接口返回response-type为application/octet-stream的文件 问题描述 后端接口定义为直接返回一个文件&#xff0c;如果带认证信息可以直接通过浏览器url下载&#xff0c;但是接口需要传headers认证信息&#xff0c;url上又不支持传相关信息 解决 前端…

如何用 JMeter 编写性能测试脚本?

Apache JMeter 应该是应用最广泛的性能测试工具。怎么用 JMeter 编写性能测试脚本&#xff1f; 1. 编写 HTTP 性能测试脚本 STEP 1. 添加 HTTP 请求 img STEP 2. 了解配置信息 HTTP 请求各项信息说明&#xff08;以 JMeter 5.1 为例&#xff09;。 如下图所示&#xff1a;…

kibana监控

采取方式 Elastic Agent &#xff1a;更完善的功能 Metricbeat&#xff1a;轻量级指标收集&#xff08;采用&#xff09; 传统收集方法&#xff1a;使用内部导出器收集指标&#xff0c;已不建议 安装 metricbeat Download Metricbeat • Ship Metrics to Elasticsearch | E…

硬件安全与机器学习的结合

文章目录 1. A HT Detection and Diagnosis Method for Gate-level Netlists based on Machine Learning摘要Introduction 2. 基于多维结构特征的硬件木马检测技术摘要Instruction 3. A Hardware Trojan Detection and Diagnosis Method for Gate-Level Netlists Based on Diff…

第一章 系统工程概述|系统建模语言SysML实用指南学习

仅供个人学习记录 系统工程起因 期望当今系统能力较之前有显著提升。 竞争压力要求系统提升技术先进性&#xff1a;提高性能&#xff0c;同时降低成本及缩短交付周期 能力增长驱动需求增长&#xff0c;包括功能、互操作性、性能、可靠性提升与小型化等。 系统不再是孤立的&…

【软考系统架构设计师】2022年系统架构师综合知识真题及解析

本篇文章主要讲解2022年系统架构师综合知识真题及解析 【01】云计算服务体系结构如下图所示&#xff0c;图中①、②、③分别与SaaS、PaaS、Iaas相对应&#xff0c;图中①、②、③应为( )。 解析&#xff1a;答案选择B 从上到下&#xff0c;依次是应用层——平台层——基础设施…

【网络原理】| 应用层协议与传输层协议 (UDP)

&#x1f397;️ 主页&#xff1a;小夜时雨 &#x1f397;️ 专栏&#xff1a;javaEE初阶 &#x1f397;️ 乾坤未定&#xff0c;你我皆黑马 目录 一、应用层协议二、传输层协议&#xff08;UDP协议&#xff09; 一、应用层协议 应用层是和代码直接相关的一层&#xff0c;决定…

Spark集群中一个Worker启动失败的排错记录

文章目录 1 检查失败节点worker启动日志2 检查正常节点worker启动日志3 查看正常节点spark环境配置4 又出现新的ERROR4.1 报错解释4.2 报错解决思路4.3 端口报错解决操作 集群下电停机后再次启动时&#xff0c;发现其中一台节点的worker启动失败。 1 检查失败节点worker启动日…

常见排序算法之冒泡排序

冒泡排序&#xff0c;英文名Bubble Sort&#xff0c;是一种相对基础的 交换排序方法。这种排序算法的名字来源于它操作的过程&#xff0c;可以类比为数列中的每一个元素都可以像小气泡一样&#xff0c;根据自身的大小一点一点向数组的一侧移动。具体到冒泡排序的工作原理&#…

【Java网络编程】二

本文主要介绍了传输层的UDP协议和TCP协议&#xff0c;以及在Java中如何通过Socket套接字实现网络编程&#xff08;内附UDP和TCP版本的回显服务器代码&#xff09; 一.网络通信 网络编程&#xff0c;就是写一个应用程序&#xff0c;让这个程序可以使用网络通信&#xff0c;这里就…

Day9力扣打卡

打卡记录 掷骰子等于目标和的方法数&#xff08;动态规划&#xff09; 链接 用 f[i][j] 表示投了 i 次投骰子得到点数总和&#xff0c;从而得到状态转移方程 f[i][j]f[i−1][j]f[i−1][j−1]⋯f[i−1][j−min(k−1,j)] 。 class Solution { public:int numRollsToTarget(int…

Tauri2 mobile development traps

时间点&#xff1a;2023/10/24。最近在倒腾移动端开发&#xff0c;不想学原生和 flutter&#xff0c;试了试 react-native&#xff0c;开发体验没有想象中的舒服&#xff0c;干脆直接上 tauri 2 吧&#xff0c;半年前就听说 tauri 2 支持移动端&#xff0c;到现在应该可堪小用。…