【问题标题】:Positioning EditText Above Keyboard将 EditText 定位在键盘上方
【发布时间】:2015-01-09 10:55:36
【问题描述】:

我有一个看起来像这样的EditText(带有“底部重力”):

当我按下EditText 时,键盘会出现,我再也看不到我正在输入的内容(因为 EditText 现在位于键盘后面,位于底部)。当EditText 被按下时,如何自动将其移动到键盘上方?

最后,如果它看起来像这样就好了:

我的代码:

// LINEAR LAYOUT
LinearLayout layout = new LinearLayout(getApplicationContext());
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);
// TEXTVIEW
layout.addView(tv);
// EDITTEXT
et.setGravity(Gravity.BOTTOM);
et.setInputType(InputType.TYPE_CLASS_TEXT);
et.setImeOptions(EditorInfo.IME_ACTION_SEND);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);
                        params.gravity = Gravity.BOTTOM;
                        et.setLayoutParams(params); // SOMETHING LIKE ONTOUCH -> MOVE UPWARDS
                        layout.addView(et);

【问题讨论】:

标签: android android-edittext android-softkeyboard


【解决方案1】:

在您的 Manifest 文件中为此特定活动添加以下代码

<activity android:windowSoftInputMode="adjustPan">

查看this 文档了解更多信息。

【讨论】:

  • 如果您从代码中获取活动,您也可以这样设置:activity.getWindow().setSoftInputMode(SOFT_INPUT_ADJUST_PAN);
【解决方案2】:

使用

android:windowSoftInputMode="stateVisible|adjustResize" 

在您的清单文件中。 请参阅developer site 供您参考

【讨论】:

    【解决方案3】:

    有时会在清单中设置活动

    android:windowSoftInputMode="stateVisible|adjustResize" 
    android:windowSoftInputMode="adjustPan" 
    

    不适用于包含 EditText 的滚动视图。

    经过研究,我发现 在某些情况下,必须将父布局设置为android:fitsSystemWindows="true"。然后在滚动条上方滚动EditText 的本机功能就像一个魅力。

    【讨论】:

      【解决方案4】:

      只需在布局 xml 中设置 android:fitsSystemWindows="true" 对我有用。

      【讨论】:

      • 欢迎堆栈溢出!你能解释一下你在哪里设置的,因为 OP 没有显示 .xml。您是否对显示的代码进行了编辑以解决 OP 的问题?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多