首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >adjustPan不会阻止键盘覆盖EditText

adjustPan不会阻止键盘覆盖EditText
EN

Stack Overflow用户
提问于 2010-12-30 07:33:54
回答 7查看 58.2K关注 0票数 45

我正在尝试创建一个非常基本的聊天屏幕,其中包含一个显示文本的ListView和一个位于底部的EditText以及位于EditText右侧的"Send“按钮。一切都正常,但当我单击EditText时,虚拟键盘会覆盖它。屏幕平移了一点,但还不足以在键盘上方可见。我在清单中添加了"adjustPan“标签,也尝试了"adjustResize”标签,但都没有用。我猜这与我的布局设置方式有关,但老实说,我一点也不知道。请帮帮我!

当前布局...

代码语言:javascript
复制
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<ListView android:id="@+id/android:list" 
    android:layout_height="0dip" 
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:stackFromBottom="true">
</ListView>

<LinearLayout android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">

    <EditText android:id="@+id/sendMessageBox"
        android:focusable="true"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:scrollbars="vertical"
        android:maxLines="4"
        android:text=""
        android:inputType="textShortMessage|textAutoCorrect|textCapSentences|textMultiLine"
        android:maxLength="1000"
        android:hint="Type your message..."
        android:imeOptions="actionSend"/>

    <Button android:id="@+id/sendMessageButton" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:text="Send"/>

</LinearLayout>

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-01-25 12:10:41

在做了大量的搜索之后,显然这就是我所说的bug。如果使用fullscreen标记(从活动中移除状态栏),则在不将活动包装在ScrollView中的情况下,不能使用"adjustResize“。不幸的是,对我来说,我使用的是ListView,这会造成另一个问题。我厌倦了把它搞得一团糟,很可能会放弃全屏的活动。

票数 54
EN

Stack Overflow用户

发布于 2014-01-23 04:53:19

在清单文件中,您需要设置适当的android:windowSoftInputMode属性。此属性从API 3开始有效。

代码语言:javascript
复制
<activity
    ...
    android:windowSoftInputMode="adjustPan" >
</activity>

选项包括:http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

  • stateUnspecified未指定软键盘的状态(是隐藏还是可见)。系统将选择适当的状态或依赖于主题中的设置。这是软键盘的行为的默认设置。当活动到达fore.
  • "stateHidden"时,软键盘被保持在它最后所处的状态,无论是可见的还是隐藏的。当用户选择该活动时,即,当用户肯定地导航到该活动时,当活动的主窗口具有focus.
  • stateVisible输入时,软键盘总是隐藏的;当通常适当时,软键盘是可见的(当用户向前导航到活动的主window).
  • stateAlwaysVisible时,当用户选择该活动时,软键盘变得可见--即,当用户肯定地向前导航到该活动时,而不是因为离开另一个activity.
  • adjustUnspecified而返回到它,未指定活动的主窗口是否调整大小以便为软键盘腾出空间,或者窗口的内容是否平移以使当前焦点在屏幕上可见。系统将根据窗口内容是否有可滚动其内容的布局视图,自动选择其中一种模式。如果有这样的视图,则窗口将调整大小,前提是滚动可以使窗口的所有内容在较小的区域内可见。这是主window.
  • adjustResize行为的缺省设置。在screen.
  • adjustPan上,活动的主窗口始终会调整大小,以便为软键盘腾出空间。活动的主窗口的大小不会调整,以便为软键盘腾出空间。相反,窗口的内容会自动平移,因此当前焦点永远不会被键盘遮挡,用户始终可以看到他们正在键入的内容。这通常比调整大小更不可取,因为用户可能需要关闭软键盘才能到达窗口的遮挡部分并与之交互。
票数 32
EN

Stack Overflow用户

发布于 2015-10-27 22:38:00

如果您为清单中的活动设置了android:windowSoftInputMode="adjustResize",则ScrollView (或其他可折叠的ViewGroups)将收缩以容纳软键盘。但是,如果您在活动的主题中设置了android:windowFullscreen="true",那么ScrollView将不会缩小,因为它会被强制填满整个屏幕。但是,在主题中设置android:fitsSystemWindows="false"也会导致adjustResize无法工作

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4558810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档