iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在Android项目中显示与隐藏软键盘
  • 599
分享到

如何在Android项目中显示与隐藏软键盘

androidroi目中 2023-05-31 10:05:41 599人浏览 薄情痞子
摘要

本篇文章为大家展示了如何在Android项目中显示与隐藏软键盘,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、软键盘显示的原理    软件盘的本质是什么?软键盘其实是

本篇文章为大家展示了如何在Android项目中显示与隐藏软键盘,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

一、软键盘显示的原理

    软件盘的本质是什么?软键盘其实是一个Dialog!

    InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,使之能够在底部或者全屏显示。当我们点击输入框时,系统对活动主窗口进行调整,从而为输入法腾出相应的空间,然后将该Dialog显示在底部,或者全屏显示。

二、活动主窗口调整

    android定义了一个属性,名字为windowsoftInputMode, 用它可以让程序可以控制活动主窗口调整的方式。我们可以在AndroidManifet.xml中对Activity进行设置。如:android:windowSoftInputMode="stateUnchanged|adjustPan"
    该属性可选的值有两部分,一部分为软键盘的状态控制,另一部分是活动主窗口的调整。前一部分本文不做讨论,请读者自行查阅android文档。

模式一,压缩模式

    windowSoftInputMode的值如果设置为adjustResize,那么该Activity主窗口总是被调整大小以便留出软键盘的空间。

我们通过一段代码来测试一下,当我们设置了该属性后,弹出输入法时,系统做了什么。
重写Layout布局:

public class ResizeLayout extends LinearLayout{   private static int count = 0;      public ResizeLayout(Context context, AttributeSet attrs) {     super(context, attrs);   }      @Override   protected void onSizeChanged(int w, int h, int oldw, int oldh) {       super.onSizeChanged(w, h, oldw, oldh);          Log.e("onSizeChanged " + count++, "=>onResize called! w="+w + ",h="+h+",oldw="+oldw+",oldh="+oldh);   }      @Override   protected void onLayout(boolean changed, int l, int t, int r, int b) {     super.onLayout(changed, l, t, r, b);     Log.e("onLayout " + count++, "=>OnLayout called! l=" + l + ", t=" + t + ",r=" + r + ",b="+b);   }      @Override   protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {     super.onMeasure(widthMeasureSpec, heightMeasureSpec);          Log.e("onMeasure " + count++, "=>onMeasure called! widthMeasureSpec=" + widthMeasureSpec + ", heightMeasureSpec=" + heightMeasureSpec);   }

xml:

<com.winuxxan.inputMethodTest.ResizeLayout  xmlns:android="Http://schemas.android.com/apk/res/android"  android:id="@+id/root_layout"  android:layout_width="fill_parent"  android:layout_height="fill_parent"  android:orientation="vertical"  >  <EditText   android:layout_width="fill_parent"   android:layout_height="wrap_content"  />  <LinearLayout    android:id="@+id/bottom_layout"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical"    android:gravity="bottom">s  <TextView   android:layout_width="fill_parent"   android:layout_height="wrap_content"   android:text="@string/hello"   android:background="#77777777"   />  </LinearLayout> </com.winuxxan.inputMethodTest.ResizeLayout>

AndroidManifest.xml的Activity设置属性:android:windowSoftInputMode = "adjustResize"

运行程序,点击文本框,查看调试信息:

E/onMeasure 6(7960): =>onMeasure called! widthMeasureSpec=1073742144, heightMeasureSpec = 1073742024E/onMeasure 7(7960): =>onMeasure called! widthMeasureSpec=1073742144, heightMeasureSpec = 1073742025E/onSizeChanged 8(7960): =>onSizeChanged called! w=320,h=201,oldw=320,oldh=377E/onLayout 9(7960): =>OnLayout called! l=0, t=0,r=320,b=201

从调试结果我们可以看出,当我们点击文本框后,根布局调用了onMeasure,onSizeChanged和onLayout。

实际上,当设置为adjustResize后,软键盘弹出时,要对主窗口布局重新进行measure和layout,而在layout时,发现窗口的大小发生的变化,因此调用了onSizeChanged。

从下图的运行结果我们也可以看出,原本在下方的TextView被顶到了输入法的上方。  

如何在Android项目中显示与隐藏软键盘

 模式二,平移模式

windowSoftInputMode的值如果设置为adjustPan,那么该Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作。
上面的例子中,我们将AndroidManifest.xml的属性进行更改:android: windowSoftInputMode = "adjustPan"

重新运行,并点击文本框,查看调试信息:

E/onMeasure 6(8378): =>onMeasure called! widthMeasureSpec=1073742144, heightMeasureSpec=1073742200E/onMeasure 7(8378): =>onMeasure called! widthMeasureSpec=1073742144, heightMeasureSpec=1073742201E/onLayout 8(8378): =>OnLayout called! l=0, t=0,r=320,b=377

我们看到:系统也重新进行了measrue和layout,但是我们发现,layout过程中onSizeChanged并没有调用,这说明输入法弹出前后并没有改变原有布局的大小。

从下图的运行结果我们可以看到,下方的TextView并没有被顶到输入法上方。

如何在Android项目中显示与隐藏软键盘

    事实上,当输入框不会被遮挡时,该模式没有对布局进行调整,然而当输入框将要被遮挡时,窗口就会进行平移。也就是说,该模式始终是保持输入框为可见。如下图,整个窗口,包括标题栏均被上移,以保证文本框可见

如何在Android项目中显示与隐藏软键盘

模式三 自动模式

    当属性windowSoftInputMode被设置为adjustUspecified时,它不被指定是否该Activity主窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为设置。

    也就是说,系统自动决定是采用平移模式还是压缩模式,决定因素在于内容是否可以滚动。

上述内容就是如何在Android项目中显示与隐藏软键盘,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: 如何在Android项目中显示与隐藏软键盘

本文链接: https://www.lsjlt.com/news/224962.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Android项目中显示与隐藏软键盘
    本篇文章为大家展示了如何在Android项目中显示与隐藏软键盘,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、软键盘显示的原理    软件盘的本质是什么?软键盘其实是...
    99+
    2023-05-31
    android roi 目中
  • Android项目中怎么显示与隐藏软键盘
    今天就跟大家聊聊有关Android项目中怎么显示与隐藏软键盘,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。代码如下:import android.app.Activity;impor...
    99+
    2023-05-31
    android roi 目中
  • Android开发中怎么使用Dialog显示与隐藏软键盘
    Android开发中怎么使用Dialog显示与隐藏软键盘?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。效果图:2.实现过程先说说最开始的实现方法:// 显示Dialogdial...
    99+
    2023-05-31
    android dialog roi
  • Android 检测键盘显示或隐藏键盘的实现代码
    Android 检测键盘是否显示及隐藏键盘的方法~~        Android 中对于键盘的隐藏与显示的文章很多,今天公司项目需求不仅需要键盘隐藏和显示还需要对键盘的...
    99+
    2023-05-31
    android 键盘 roi
  • Android应用中怎么实现一个隐藏与显示键盘功能
    Android应用中怎么实现一个隐藏与显示键盘功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。隐藏键盘: public static void hideSoftInp...
    99+
    2023-05-31
    android roi
  • 如何在android项目中里ListView隐藏底部View
    这篇文章将为大家详细讲解有关如何在android项目中里ListView隐藏底部View,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1。底部BottomView的内容如下,这个XML文件的...
    99+
    2023-05-31
    listview android view
  • 如何显示u盘隐藏文件
    这篇文章将为大家详细讲解有关如何显示u盘隐藏文件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在桌面上新建一个文本文档,将以下代码复制进去。在窗口中,点击文件→另存为,然后在界面中,进行命名,保存类型选择...
    99+
    2023-06-28
  • 怎么在Android中利用FloatingActionButton实现显示与隐藏
    本篇文章为大家展示了怎么在Android中利用FloatingActionButton实现显示与隐藏,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。FloatingActionButton简介Floa...
    99+
    2023-05-30
    android floatingactionbutton
  • Android软键盘状态并隐藏输入法的示例分析
    这篇文章主要介绍了Android软键盘状态并隐藏输入法的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Android 软键盘状态并隐藏输入法的实例1 软键盘状态的切换...
    99+
    2023-05-30
    android
  • Android中EditText光标的显示与隐藏方法
    目录Android EditText的光标的显示和隐藏Android之第一次不显示EditText光标总结Android EditText的光标的显示和隐藏 一、java代码 1.编...
    99+
    2024-04-02
  • Android开发中实现点击隐藏软键盘的方法
    Android开发中实现点击隐藏软键盘的方法?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现功能:点击EditText,软键盘出现并且不会隐藏,点击或者触摸E...
    99+
    2023-05-31
    android roi
  • 怎么在css中显示与隐藏元素
    本篇文章给大家分享的是有关怎么在css中显示与隐藏元素,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。display对于元素显隐来说,最常见就是display:none | di...
    99+
    2023-06-08
  • 如何在html中显示和隐藏元素
    本篇文章为大家展示了如何在html中显示和隐藏元素,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。html是什么html的全称为超文本标记语言,它是一种标记语言,包含了一系列标签.通过这些标签可以将网...
    99+
    2023-06-06
  • css如何使用display显示与隐藏
    这篇文章主要介绍css如何使用display显示与隐藏,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! display闪现对象形式(display:block)和潜藏对象内容(di...
    99+
    2024-04-02
  • Android应用中怎么实现一个软键盘隐藏功能
    这篇文章将为大家详细讲解有关Android应用中怎么实现一个软键盘隐藏功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体方法如下:...public static void hideKe...
    99+
    2023-05-31
    android roi
  • Android开发中如何使用PopupWindow实现隐藏与显示功能
    这篇文章给大家介绍Android开发中如何使用PopupWindow实现隐藏与显示功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、PopupWindow的隐藏final PopupWindow window = ...
    99+
    2023-05-31
    android popupwindow roi
  • 如何在Android在使用TextView实现一个显示与隐藏全文功能
    如何在Android在使用TextView实现一个显示与隐藏全文功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。参数定义<declare-styleab...
    99+
    2023-05-31
    android textview roi
  • 如何在dedecms中隐藏栏目?
    对不起,我无法提供关于如何隐藏栏目的具体代码示例。如果您想了解关于dedecms隐藏栏目的操作和原理,请提供更多细节和指导,我将尽力帮助您。以上就是如何在dedecms中隐藏栏目?的详...
    99+
    2024-03-14
    dedecms 编程技巧 隐藏栏目 栏目隐藏
  • jquery如何实现显示与隐藏的互换
    本篇内容主要讲解“jquery如何实现显示与隐藏的互换”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“jquery如何实现显示与隐藏的互换”吧! ...
    99+
    2024-04-02
  • Android应用中怎么动态显示与隐藏状态栏
    这篇文章给大家介绍Android应用中怎么动态显示与隐藏状态栏,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是沉浸式?先来分析一下叫错的原因吧,之所以很多人会叫错,是因为根本就不了解沉浸式是什么意思,然后就人云亦云...
    99+
    2023-05-31
    android roi
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作