防止背景调整大小并防止自动关注活动开始

时间:2014-03-06 16:07:40

标签: android android-edittext

在查找有关堆栈溢出的各种问题后,我发现许多其他人遇到以下问题:

  1. 当软键盘打开时背景调整大小
  2. 活动开始时打开软键盘
  3. 这两者的解决方案都在ActivityManifest.xml

    要防止在打开软键盘时调整背景图片的大小,您可以将android:windowSoftInputMode="stateVisible|adjustPan"添加到清单中的<activity>

    要防止活动开始时软键盘打开,您可以将android:windowSoftInputMode="stateHidden"添加到清单中的<activity>

    一个解决方案需要stateHidden而另一个解决方案需要stateVisible这一事实意味着我无法使用这两种解决方案。我希望防止软键盘关注活动开始但阻止软键盘在用户 决定关注{{1}时调整背景大小}}

    这两个问题都有可行的解决方案吗?

4 个答案:

答案 0 :(得分:0)

如果您的EditText包装在父容器中,请为该容器设置android:focusableInTouchMode="true"。基本上,使该容器在活动开始时获得初始焦点。看一下这个link

答案 1 :(得分:0)

  

一个解决方案需要stateHidden而另一个解决方案需要   stateVisible意味着我不能同时使用这两种解决方案。

是。但是,您可以使用stateHidden|adjustPan

除非用户点击EditText,否则不会弹出键盘。您的背景可能会在定位方面发生变化;不会发生背景缩放。

答案 2 :(得分:0)

布局的任何部分都是可滚动的容器(如ListView)吗?如果是这样,请尝试在XML布局中的该项目上设置android:isScrollContainer="false"

如果您有android:isScrollContainer="true"的任何视图,布局管理器将尝试在弹出键盘时调整布局大小,而不管`android:windowSoftInputMode'。

这是一个类似的问题:What does android:isScrollContainer do?

答案 3 :(得分:0)

基本上有两种方法可以满足您的要求。

  • 只需使用以下活动代码

    即可

    机器人:windowSoftInputMode =&#34; adjustPan | stateAlwaysHidden&#34;

  • 使用   android:windowSoftInputMode="stateVisible|adjustPan"到清单中的活动代码。

现在使用您的EditText,android:focusableInTouchMode="true"android:focusable="false"一起使用。