171

有没有办法让屏幕滚动以允许看到文本字段?

4

15 回答 15

171

I had same issues. Try following code:

android:windowSoftInputMode="adjustPan"

add it to your manifest.xml in the activity tag of the activity that holds the input. example:

<activity
            android:name=".Activities.InputsActivity"
            ...
            android:windowSoftInputMode="adjustPan"
            />
于 2014-02-14T17:52:22.077 回答
167

您是否在问如何控制软键盘打开时可见的内容?您可能想玩windowSoftInputMode。有关更多讨论,请参阅开发人员文档

于 2010-07-21T02:38:30.230 回答
56

我遇到了同样的问题,软键盘位于屏幕底部的 EditText 视图的顶部。我可以通过在我的 AndroidManifest.xml 文件的相关活动中添加一行来找到解决方案。

android:windowSoftInputMode="adjustResize|stateHidden"

这是整个活动标签的样子:

<activity
        android:name="com.my.MainActivity"
        android:screenOrientation="portrait"
        android:label="@string/title_activity_main"
        android:windowSoftInputMode="adjustResize|stateHidden" >
    </activity>

这里最重要的值是adjustResize。这会将整个 UI 向上移动,以便为软键盘腾出空间。

于 2013-06-25T04:18:45.187 回答
26

为什么不尝试添加一个 ScrollView 来包装您想要滚动的任何内容。这是我的做法,我实际上在顶部留下了一个不滚动的标题,而当您打开软键盘时,对话框小部件(特别是 EditTexts)会滚动。

<LinearLayout android:id="@+id/HeaderLayout" >
  <!-- Here add a header or whatever will not be scrolled. -->
</LinearLayout>
<ScrollView android:id="@+id/MainForm" >
  <!-- Here add your edittexts or whatever will scroll. -->
</ScrollView>

我通常会在 ScrollView 中有一个 LinearLayout,但这取决于你。此外,至少在我的设备上,将 Scrollbar 样式设置为 outsideInset 会有所帮助。

于 2010-08-19T12:33:14.690 回答
17

你需要做的就是

android:isScrollContainer="true"

来源:http ://www.davidwparker.com/2011/08/25/android-fixing-window-resize-and-scrolling/

于 2016-02-02T14:31:02.483 回答
15

很抱歉恢复旧线程,但没有人提到android:imeOptions="flagNoFullscreen"您的 EditText 元素中的设置

于 2014-06-07T03:10:22.400 回答
9
android:windowSoftInputMode="adjustPan"
android:isScrollContainer="true"

适用于 android EditText,但不适用于 webview 或 xwalkview。当软键盘隐藏您使用的 webview 或 xwalkview 中的输入时android:windowSoftInputMode="adjustResize"

于 2016-12-07T05:09:07.723 回答
4

我相信您可以通过使用轨迹球使其滚动,最终可能通过选择方法以编程方式实现,但这只是一个想法。我知道轨迹球方法通常有效,但至于执行此操作并使其从代码中工作的确切方法,我不确定。
希望有帮助。

于 2010-07-21T01:36:06.400 回答
1

只需添加

android:gravity="bottom" android:paddingBottom="10dp"

根据您的edittext大小更改paddingBottom

于 2020-09-08T12:36:03.073 回答
1

将这一行添加到您的相关活动中,其中键盘覆盖编辑 text.inside onCreat() 活动方法。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
于 2018-05-25T07:54:11.900 回答
0

我知道这很旧,但上述解决方案都不适合我。经过大量调试,我发现了问题所在。解决方案是android:windowTranslucentStatus在我的 styles.xml 中将属性设置为 false

于 2019-04-19T14:35:56.547 回答
0

如果 EditText 字段被 KeyBoard 覆盖,请使用以下代码:

    EditText= findViewById(R.id.edittext)
    EditText?.getParent()?.requestChildFocus(EditText,EditText)

如果您希望光标位于 Focused EditText 中,而不是使用 EditText.requestFocus()after ,EditText?.getParent()?.requestChildFocus(EditText,EditText) 这有助于在 Focused EditText 中获得焦点和光标。

于 2020-01-21T10:02:07.763 回答
0

上述解决方案完美运行,但如果您使用的是全屏活动(半透明状态栏),那么这些解决方案可能不起作用。因此,对于全屏,请在 Activity 的 onCreate 函数中使用此代码。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Window w = getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN , WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN );
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR);
    }

例子:

  protected void onCreate(Bundle savedInstanceState) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        Window w = getWindow();
        w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN , WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN );
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION, WindowManager.LayoutParams.TYPE_STATUS_BAR);
    }
    
    super.onCreate(savedInstanceState);
于 2020-09-30T06:24:03.907 回答
-1

编辑您的 AndroidManifest.xml

android:windowSoftInputMode="adjustResize"

将此添加到布局文件的根视图中。

android:fitsSystemWindows="true"

就这样。

于 2018-07-09T12:40:40.220 回答
-1

我遇到了同样的问题,并搜索了说要添加的人adjustPan,而在我的情况下adjustResize有效。

<activity
    android:name=".YOUR.ACTIVITY"
    ...
    android:windowSoftInputMode="adjustResize"
/>
于 2020-07-30T08:58:06.267 回答