`

android:windowSoftInputMode 属性介绍

阅读更多

简单的介绍了一下如何实现软键盘不自动弹出,使用的方法是设置android:windowSoftInputMode属性。那么,这个属性到底是干什么的,他有什么作用呢?今天这篇文章,就是探索android:windowSoftInputMode属性的作用的。

    首先,我们从这个属性的名称中,可以很直观的看出它的作用,这个属性就是来设置窗口软键盘的交互模式的。

    android:windowSoftInputMode属性一共有9个取值,分别是:

    stateUnspecified,stateUnchanged,stateHidden,stateAlwaysHidden,

    stateVisible,stateAlwaysVisible,adjustUnspecified,adjustResize,adjustPan。

 

  1.stateUnspecified

    中文意思是未指定状态,当我们没有设置android:windowSoftInputMode属性的时候,软件默认采用的就是这种交互方式,系统会根据 界面采取相应的软键盘的显示模式,比如,当界面上只有文本和按钮的时候,软键盘就不会自动弹出,因为没有输入的必要。那么,当界面上出现了获取了焦点的输 入框的时候,软键盘会不会自动的弹出呢?这个还真不一定!比如,在下面的这个界面布局中,软键盘并不会自动弹出。

 

    默认的,在这种界面情况下,系统并不确定用户是否需要软键盘,因此不会自动弹出。但是,为什么说不一定呢?这是因为,如果我们在这个布局的外面,包裹上一个

ScrollView,软键盘就会自动的弹出来了!

如下,在这种布局文件下,软键盘会自动的弹出

 

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
 
    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
 
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical" >
 
            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:onClick="toOther"
                android:text="跳转" />
 
            <EditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>
 
</LinearLayout>

 

这确实是一个很奇怪的判断方式。因此,我们可以得出结论,当设置属性为stateUnspecified的时候,系统是默认不弹出软键盘的,但是当 有获得焦点的输入框的界面有滚动的需求的时候,会自动弹出软键盘。至于为什么非要强调要获取焦点的输入框,这是因为,如果不是输入框获取焦点,软键盘也是 不会自动弹出的,让界面不自动弹出软键盘的其中一个解决方案,就是在xml文件中,设置一个非输入框控件获取焦点,从而阻止键盘弹出。

    2.stateUnchanged

    中文的意思就是状态不改变的意思,我们应该怎么理解这句话呢?其实很好理解,就是说,当前界面的软键盘状态,取决于上一个界面的软键盘状态。举个例子,假 如当前界面键盘是隐藏的,那么跳转之后的界面,软键盘也是隐藏的;如果当前界面是显示的,那么跳转之后的界面,软键盘也是显示状态。

    3.stateHidden

    顾名思义,如果我们设置了这个属性,那么键盘状态一定是隐藏的,不管上个界面什么状态,也不管当前界面有没有输入的需求,反正就是不显示。因此,我们可以设置这个属性,来控制软键盘不自动的弹出。

    4.stateAlwaysHidden

    这个属性也可以让软键盘隐藏,但是我暂时还不知道和stateHidden属性的区别,本来想去stackOverFlow上问一下的,但是,Great Wall,呵呵呵...祝愿病魔早日战胜方校长

    5.stateVisible

    设置为这个属性,可以将软键盘召唤出来,即使在界面上没有输入框的情况下也可以强制召唤出来。

    6.stateAlwaysVisible

    这个属性也是可以将键盘召唤出来,但是与stateVisible属性有小小的不同之处。举个例子,当我们设置为stateVisible属性,如果当前 的界面键盘是显示的,当我们点击按钮跳转到下个界面的时候,软键盘会因为输入框失去焦点而隐藏起来,当我们再次回到当前界面的时候,键盘这个时候是隐藏 的。但是如果我们设置为stateAlwaysVisible,我们跳转到下个界面,软键盘还是隐藏的,但是当我们再次回来的时候,软键盘是会显示出来 的。所以,这个Always就解释了这个区别,不管什么情况到达当前界面(正常跳转或者是上一个界面被用户返回),软键盘都是显示状态。

    说到这里,我联想到了上面的stateHidden和stateAlwaysHidden,我估计区别也是这样的,就是 说,stateAlwaysHidden无论如何都是隐藏的,但是如果在跳转到下个界面的时候,软键盘被召唤出来了,那么当下个界面被用户返回的时候,键 盘应该是不会被隐藏的,但是,我还没有找到能够跳转到下个界面,还让当前界面软键盘不消失的方法,所以暂时不能验证。

    7.adjustUnspecified

    从这个属性开始,就不是设置软键盘的显示与隐藏模式了,而是设置软键盘与软件的显示内容之间的显示关系。当你跟我们没有设置这个值的时候,这个选项也是默 认的设置模式。在这中情况下,系统会根据界面选择不同的模式。如果界面里面有可以滚动的控件,比如ScrowView,系统会减小可以滚动的界面的大小, 从而保证即使软键盘显示出来了,也能够看到所有的内容。如果布局里面没有滚动的控件,那么软键盘可能就会盖住一些内容,我们从下面的图中可以看出差别。

 

分享到:
评论

相关推荐

    Android中的windowSoftInputMode属性详解

    在前面的一篇文章中,简单的介绍了一下如何实现软键盘不自动弹出,使用的方法是设置android:windowSoftInputMode属性。那么,这个属性到底是干什么的,他有什么作用呢?今天这篇文章,就是探索android:...

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

    基本就是结合layout中ScrollView视图和AndroidManifest.xml中activity中的android:windowSoftInputMode属性配置实现; 2.要了解android:windowSoftInputMode相应的可以配置项: activity主窗口与软键盘的交互模式,...

    android edittext不弹出软键盘三种方法

    在AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为adjustUnspecified|stateHidden 例如: &lt;activity android:name=".Main" android:label="@string/app_name" android:...

    Android爬坑之旅:软键盘挡住输入框问题的终极解决方案.docx

    解决这个问题的方法有两种,一种是使用 android:windowSoftInputMode 属性,另一种是使用 AndroidBug5497Workaround 类。 使用 android:windowSoftInputMode 属性可以使得界面在软键盘弹出时自动调整,避免软键盘...

    页面未随软键盘上升及android隐藏软键盘总结

    android:windowSoftInputMode属性介绍 android:windowSoftInputMode activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。 这个属性能影响两件事情: 【一】当有焦点产生...

    关于键盘遮挡activity的问题

    总结起来,解决软键盘遮挡Activity的问题有多种方法,包括但不限于修改Activity的`setSoftInputMode`、在`AndroidManifest.xml`中设置`android:windowSoftInputMode`属性以及调整布局结构等。每种方法都有其适用场景...

    activity的设置大全

    通过以上详尽的介绍,我们可以看到每个`Activity`属性都有其特定的作用和应用场景。合理地利用这些属性,不仅可以提高应用的用户体验,还能有效地管理资源和性能。希望本文能够帮助开发者更好地掌握和应用`Activity`...

    ListView背景被挤压问题(已经解决)

    例如,在ListView的布局文件中添加以下属性: ```xml ... android:fitsSystemWindows="true"&gt; ``` 通过设置`android:fitsSystemWindows="true"`,可以让ListView适配系统窗口的变化,避免背景被挤压。 ##### ...

    如何将编辑框EditText置于系统软键盘之上小例子

    在AndroidManifest.xml文件中的标签内,添加`android:windowSoftInputMode="adjustPan"`属性。这会让EditText控件随着软键盘的出现而上移,以便始终可见。 ```xml android:name=".YourActivity" android:...

    Android-键盘挡住输入框终极解决办法

    1. **使用android:windowSoftInputMode属性**:在AndroidManifest.xml中,为相应的Activity添加`android:windowSoftInputMode="adjustPan"`或`android:windowSoftInputMode="adjustResize"`。前者会使输入框平移以...

    MyFileChooser.rar

    &lt;item name="android:windowSoftInputMode"&gt;adjustNothing  &lt;item name="android:windowNoTitle"&gt;true&lt;/item&gt; &lt;/style&gt; ----------- android:name="studio32a.yangguang.passwordmanager....

    Android_XML属性大全

    本文将详细介绍Android XML中常用的属性及其功能。 #### 二、Android Activity 属性 **1. `android:allowTaskReparenting`** - **功能描述**:此属性决定了Activity是否可以从一个任务转移到另一个任务中。 - *...

    android 自定义AlertDialog弹出键盘可以输入的

    此外,为了让键盘在`AlertDialog`弹出时自动显示,我们需要在`AndroidManifest.xml`中为对应的Activity添加以下属性: ```xml android:name=".YourActivity" android:windowSoftInputMode="adjustPan"&gt; ``` `...

    AndroidManifest.xml文件剖析[参考].pdf

    * android:windowSoftInputMode:指定Activity的软键盘模式 在application分支中,我们需要了解一些常见的属性,这里可以看到一些我们实用的选项,比如允许调试android:debuggable、任务关系android:taskAffinity、...

    软键盘和其他布局完美切换

    4. **使用android:windowSoftInputMode属性**:在AndroidManifest.xml中,针对具体Activity设置`android:windowSoftInputMode="adjustPan"`或`android:windowSoftInputMode="adjustResize"`,控制键盘弹出时应用的...

    EditText与TextView 属性大全

    从给定的文件信息来看,虽然标题和描述指向了`EditText`与`TextView`的属性大全,但在部分内容中,却详细列举了与Android Activity相关的属性。因此,我将基于这部分内容,深入解析与Activity相关的各个属性,以满足...

    AndroidManifest.xml文件剖析.pdf

    * android:windowSoftInputMode:Activity的软键盘模式 application分支的属性 ------------------------- application分支中包含了Android程序的四种对象:Activity、Service、Content Provider以及Receiver。...

    android xml属性总结

    `android:windowSoftInputMode` 控制Activity主窗口与软键盘的交互模式,包括软键盘的状态和窗口调整策略,确保输入体验的一致性和效率。 深入理解并灵活运用这些属性,将大大提升Android应用的用户体验和性能...

Global site tag (gtag.js) - Google Analytics