2014-03-06 53 views
3

仰视上堆栈溢出的各种问题后,我发现,很多人存在以下问题:防止后台调整,防止自动聚焦于活动开始

  1. 背景被调整大小时,软键盘打开
  2. 软件键盘在活动开始时打开

这两个问题的解决方案都在ActivityManifest.xml

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

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

事实上,一个解决方案需要stateHidden,另一个需要stateVisible意味着我不能使用这两种解决方案。我正在寻找防止软盘开始盗取活动重点但当用户确定决定将重点放在EditText防止软键盘调整背景。

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

回答

0

一个解决方案需要stateHidden和其他需要 stateVisible意味着我不能使用这两种解决方案的事实。

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

键盘不会弹出,除非用户点击EditText。对你的背景的潜在变化将取决于定位;不会发生背景的缩放。

0

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

+0

我以前在别处见过这个解决方案,但它并没有为我工作。我正在寻找一些不太冒险的东西。 –

0

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

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

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

0

基本上有两种方式来满足您的要求。

  • 只需使用下面的活动标签

    机器人:windowSoftInputMode = “adjustPan | stateAlwaysHidden”

    或者

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

现在您的EditText使用以下android:focusableInTouchMode="true"android:focusable="false"