单击编辑文本时推送内容

时间:2012-07-02 11:42:15

标签: android

我到处寻找解决我的问题但找不到答案的方法。这是问题所在。

我有一个看起来像这样的布局

Image is here

现在,当我点击编辑文本(搜索栏)时,我希望以下内容发生

Image is here

软键盘基本上需要向上推整个屏幕内容,以便搜索栏位于顶部,其列表视图位于其下方,以便在搜索内容时显示结果。我尝试将android:windowSoftInputMode="adjustPan"设置为清单中的Activity,但这不起作用。我将滚动视图设置为主布局中的主容器,其中包含片段,但也无效。我已经尝试将编辑文本(搜索栏)作为标题添加到列表视图中,但这也不起作用。每次键盘向上推动编辑文本但覆盖列表视图。有没有办法让这项工作?

11 个答案:

答案 0 :(得分:73)

实际上,如果你希望你的整个布局比你应该使用的那样:

SOFT_INPUT_ADJUST_PAN

含义:

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

这将使键盘保持关闭状态,打开时它会推动整个活动。

答案 1 :(得分:19)

可以在Fragment Class中使用它来向上移动编辑文本并滚动到结束。

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

如果您的片段活动主题不在FullScreen中,这将有效。

希望这会有所帮助!

答案 2 :(得分:10)

这对我有用。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

答案 3 :(得分:9)

我遇到了类似的问题,解决方案很简单。

如果活动中的主题设置为全屏@android:style/Theme.Holo.NoActionBar.FullScreen,则键盘不会推送内容。

我将活动更改为@android:style/Theme.Holo.NoActionBar后,键盘正在推动活动内容。

答案 4 :(得分:9)

试试这个

android:windowSoftInputMode="adjustResize"

为我工作。

答案 5 :(得分:7)

在清单文件中尝试android:windowSoftInputMode="adjustResize"

您可能需要执行android:windowSoftInputMode="adjustResize|adjustPan" ...我没有任何可与您的设置相媲美的测试......

你的问题是因为(来自adjustPan的文档,强调我的):

  

活动的主窗口未调整大小以便为软件腾出空间   键盘。相反,窗口的内容会自动平移   这样当前焦点永远不会被键盘和用户遮挡   总能看到他们正在打字的内容

鉴于此,由于顶部的EditText具有焦点,因此您的列表被遮挡了。我目前唯一能想到的就是移动EditText,使其低于列表。然后,当向上推时,您的列表仍应显示在EditText上方。

答案 6 :(得分:4)

这对我有用,对于片段,只需在Manifest中用活动声明它:

android:windowSoftInputMode="adjustPan"

祝你好运!

答案 7 :(得分:3)

我找不到自动更改布局的解决方案,所以我不得不破解它。我在主活动中使用了我发现here的代码来检测键盘何时打开。我刚刚添加了代码来调用一个方法,该方法在键盘打开时隐藏了我的前两个片段。这不是我想要做的,但它确实有效。

答案 8 :(得分:1)

我将此用于EditText登录:

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

关于此方法的一些注意事项:

this指的是上下文,因为getActivity()并不总是更可取

.SOFT_INPUT_STATE_HIDDEN  //for default hidden state when activity loads

.SOFT_INPUT_STATE_VISIBLE //for auto open keyboard when activity loads 

每次都有效!

答案 9 :(得分:1)

如果有人仍然面临这个问题:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:id="@+id/view"
    android:fitsSystemWindows="true"
    android:layout_height="match_parent">

添加你的布局:

android:fitsSystemWindows="true"

我希望这能解决你的问题 - 它对我有用。

答案 10 :(得分:0)

在kotlin中:-在“创建活动”和“ onCreateView方法的片段”中添加此行

activity!!.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);