将 EditText 定位在键盘上方

Positioning EditText Above Keyboard

我有一个 EditText 看起来像这样("bottom gravity"):

当我按下 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:windowSoftInputMode="stateVisible|adjustResize" 

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

在您的 Manifest 文件中为此特定的 activity

添加以下代码
<activity android:windowSoftInputMode="adjustPan">

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

有时会在清单

中设置 activity
android:windowSoftInputMode="stateVisible|adjustResize" 
android:windowSoftInputMode="adjustPan" 

无法使用包含 EditText.

的滚动视图

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

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