【问题标题】:How to move the layout up when the soft keyboard is shown android显示软键盘时如何向上移动布局android
【发布时间】:2012-02-25 01:50:54
【问题描述】:

我的登录屏幕中有两个EditTexts 和一个登录按钮。问题是,当我开始打字时,会显示软键盘并覆盖登录按钮。出现时如何将布局向上或向上推?

我不想使用ScrollView,只想在不向下滚动的情况下实现它。请给我一些建议。提前致谢。

【问题讨论】:

    标签: android android-softkeyboard


    【解决方案1】:

    windowSoftInputMode 属性设置为adjustPanadjustResize

    <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
    

    【讨论】:

    • 这不是开箱即用的,但将其更改为 &lt;activity android:windowSoftInputMode="adjustResize"&gt;&lt;/activity&gt; 就可以了。
    • 提及您使用的 Android 版本。有些答案在某些版本上可能完全没用。
    • 正如@nickiaconis 所说,我不需要'adjustPan'参数,它对我有用,谢谢
    • 是否有可用于 Xamarin.Forms 可移植项目的等效项?所以我不必为每个单独的目标平台都这样做。
    • 设置必须是下表中列出的值之一,或一个“状态...”值加上一个“调整...”值的组合。在任一组中设置多个值(例如,多个“状态...”值)具有未定义的结果。 developer.android.com/guide/topics/manifest/…
    【解决方案2】:

    在activity对应的android manifest文件中试试这个。

    <activity android:windowSoftInputMode="adjustPan"> </activity>
    

    【讨论】:

    • 我的布局第一次向上移动,但是当关闭键盘并再次打开时,不会移动。
    【解决方案3】:

    onCreate()方法中使用此代码:

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

    【讨论】:

    • 谢谢,有帮助。 由于某种原因对我不起作用。
    • 这种方法,但使用 SOFT_INPUT_ADJUST_RESIZE 而不是 ADJUST_PAN,对我有用
    【解决方案4】:

    只有

    android:windowSoftInputMode="adjustResize"
    

    在 Manifest 文件中的活动标签中就可以了

    【讨论】:

    • 我正在使用 ConstraintLayout,这个解决方案对我不起作用。
    • 在撰写此答案时,Android 布局中未添加 ConstraintLayout。请在此线程上找到最适合您的任何其他解决方案。一旦有时间,我肯定会更新我对 ConstraintLayout 的答案。感谢举报
    【解决方案5】:

    将此行放在 manifest.xml 中的活动声明时间

    <android:windowSoftInputMode="adjustPan">
    

    【讨论】:

      【解决方案6】:
      android:fitsSystemWindows="true"
      

      在布局文件的主布局上添加属性和

      android:windowSoftInputMode="adjustResize"
      

      在 Activty 上的 Manifest.xml 文件中添加一行

      它对我来说是完美的工作。

      【讨论】:

      • fitsSystemWindows与键盘无关
      • @TimCastelijns,就我而言(全屏活动),这很重要。如果设置为false,则视图不会向上移动。
      【解决方案7】:

      我通过了解设备上软键盘的状态以某种方式实现了这一点。我在显示键盘时将布局移动到 y 位置,并在未显示时移回其原始位置。这工作正常,关注this guidelines.

      【讨论】:

      • 我可以在键盘显示时向上移动布局,但在键盘隐藏时无法移动到原来的位置,你能帮我吗?
      【解决方案8】:

      将其放入清单文件中的活动声明中 <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>

      或者,如果您愿意,您可以添加活动的 onCreate() 方法

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

      【讨论】:

      • 清单代码错误,这种方式的行为是未定义的(您设置了两个冲突值,请参阅offdoc:developer.android.com/guide/topics/manifest/…android:windowSoftInputMode 描述)。 @kiwicomb123,选择一个参数,否则系统会为你选择(这个选择可以在另一个设备/API版本上改变)
      【解决方案9】:

      这就是所有需要的:

      <activity android:windowSoftInputMode="adjustResize"> </activity>
      

      【讨论】:

        【解决方案10】:

        根据guide,实现此目的的正确方法是在您的清单中声明:

        <activity name="EditContactActivity"
                android:windowSoftInputMode="stateVisible|adjustResize">
        
            </activity>
        

        【讨论】:

        • 看起来 stateVisible 会在 Activity 开始时打开它,所以实际上没有必要将键盘向上推。
        【解决方案11】:

        当软键盘出现时,它会改变主布局的大小,您需要做的是为该主布局创建一个侦听器,并在该侦听器中添加代码scrollT0(x,y) 以向上滚动。

        【讨论】:

          【解决方案12】:

          如果你正在使用 xamarin,你可以把这段代码 WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize 在 MainActivity 类的活动属性中。 例如,现在活动属性如下所示

              [Activity(WindowSoftInputMode =Android.Views.SoftInput.AdjustPan | Android.Views.SoftInput.AdjustResize)]
              public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
              {
                  //some code here.
              }
          

          【讨论】:

            【解决方案13】:

            我通过在清单中添加代码来解决这个问题:

            <activity android:name=".Login"
                    android:fitsSystemWindows="true"
                    android:windowSoftInputMode="stateHidden|adjustPan"
            </activity>
            

            【讨论】:

              【解决方案14】:

              你应该使用

              android:windowSoftInputMode="adjustPan|stateHidden"
              

              在您声明活动的AndroidManifest.xml 文件中。当键盘显示在布局中时,这将调整您的布局内容。

              【讨论】:

                【解决方案15】:

                利用相对布局,它将调整视图,以便您在输入文本时可以看到该视图

                【讨论】:

                  【解决方案16】:

                  这对我来说就像一个魅力

                  getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
                  

                  【讨论】:

                    【解决方案17】:

                    这绝对适合你。

                    android:windowSoftInputMode="adjustPan"

                    【讨论】:

                    • 你能补充一些解释吗...?
                    • 只需转到您的 AndroidManifest.xml 文件,然后将此标签添加到您要在键盘弹出窗口中向上滚动的活动
                    猜你喜欢
                    • 2010-12-30
                    • 2011-04-16
                    • 2017-04-20
                    • 2015-11-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多