【问题标题】:Push up content when clicking in edit text单击编辑文本时上推内容
【发布时间】:2012-07-02 19:47:33
【问题描述】:

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

我的布局看起来像这样

现在,当我单击编辑文本(搜索栏)时,我希望发生以下情况

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

【问题讨论】:

  • 我有一个确切的问题,你找到任何解决方案了吗?

标签: android


【解决方案1】:

实际上,如果您希望整个布局向上平移,则应该使用:

SOFT_INPUT_ADJUST_PAN

意思:

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

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

【讨论】:

  • 但是在编辑框中输入第一个字符时布局会向上推。
  • adjustpan 工作正常,但同时,我还希望将底部的按钮放在键盘上(这基本上是使用 adjustResize 实现的,但后来它没有t 向上推动整个布局,最终隐藏输入数据的文本框。有人可以帮忙吗?
  • 我正在寻找同一个漂流王
  • 类似问题。我有一个editext,在它下面的单选按钮可以选择表情符号键盘或常规软输入键盘。在某些活动中,只有在选择 edittext 时才会向上推动 edittext。这隐藏了下面的按钮
  • 我发现如果我从我的 oncreate 方法中删除此行 Window.SetSoftInputMode(SoftInput.StateAlwaysHidden); edittext 总是在其页脚附加的情况下向上推。顺便说一下,我正在使用 xamarin
【解决方案2】:

这可以在片段类中用于向上移动编辑文本并滚动到结尾。

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

如果您的 Fragment Activity 主题不在全屏中,这肯定会起作用。

希望这会有所帮助!

【讨论】:

  • 这很好用,但是在编辑框中输入第一个字符时布局会向上推。怎么解决?如果你知道,请告诉我
  • @siva Me 也面临同样的问题
  • 工作!非常感谢
【解决方案3】:

这对我有用。

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

【讨论】:

    【解决方案4】:

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

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

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

    【讨论】:

    • 谢谢老兄!但是您知道如何将其设置为全屏吗?
    • 我也想要全屏,连活动内容都上不去。有什么解决办法吗?
    【解决方案5】:

    试试这个

    android:windowSoftInputMode="adjustResize"
    

    为我工作。

    【讨论】:

      【解决方案6】:

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

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

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

      活动的主窗口未调整大小以为软体腾出空间 键盘。而是自动平移窗口的内容 以便当前焦点不会被键盘和用户遮挡 总能看到他们在输入什么

      鉴于此,您的列表将被遮盖,因为顶部的 EditText 具有焦点。我目前唯一能想到的是将 EditText 移动到列表下方。然后,当向上推时,您的列表应该仍然在 EditText 上方可见。

      【讨论】:

      • 感谢您的回复。我试过了,没有用。调整大小有效,但它会导致内容在屏幕顶部被挤压,看起来非常糟糕,使用 adjustResize 时列表视图内容也不会显示。
      • 更新了我的答案,不是真正的解决方案,而是一种可能的解决方法。
      • 嗨 Barak 我尝试将 EditText 移动到列表视图下方,但这不起作用。我也认为应该这样做,但它只是将 EditText 推到了列表视图上并隐藏了列表视图的所有内容。
      【解决方案7】:

      这对我有用,对于片段,只需在带有活动的清单中声明它:

      android:windowSoftInputMode="adjustPan"
      

      祝你好运!

      【讨论】:

      • 我的edittext视图所在的scrollview中有几个scoolviews和相关布局。这绝对有效。我以为我必须把它放在每个edittext中,结果这很简单,呵呵。 ♥
      【解决方案8】:

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

      【讨论】:

        【解决方案9】:

        我将其用于我的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 
        

        每次都有效!

        【讨论】:

          【解决方案10】:

          如果还有人遇到这个问题:

          <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"
          

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

          【讨论】:

            【解决方案11】:

            在 kotlin 中: - 在您的 Activity on Create 和 In Fragment onCreateView 方法中添加这一行

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-05-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-09-26
              • 1970-01-01
              • 2014-02-05
              • 1970-01-01
              相关资源
              最近更新 更多