Honeycomb(3.1)adjustResize不再工作?

时间:2011-07-06 15:50:43

标签: android layout resize android-3.0-honeycomb android-softkeyboard

我的活动有android:windowSoftInputMode =“adjustResize”并且在Android 2.1中表现相应:

出现软键盘之前

Before soft keyboard appears

使用键盘

Keyboard behavior in 2.1 (good)

然而,在Honeycomb中,软键盘不会调整我的布局,而是覆盖按钮:

Keyboard behavior in Honeycomb (bad)

10英寸Galaxy标签和Motorola Xoom上的行为相同。

我多次重新设计我的布局,试图让它与Honeycomb兼容,但无济于事。软键盘将向上推动EditText视图,但不会按下按钮。

Here is a simple app project demonstrating the problem.

修改:已修复链接。

使用的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:layout_alignParentBottom="true">
        <Button
            android:id="@+id/save"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Save" />
        <Button
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Cancel" />
    </LinearLayout>
    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true">
        <EditText
            android:layout_height="wrap_content"
            android:layout_width="fill_parent" />
    </ScrollView>
</RelativeLayout>

我发现的唯一相关问题是this,但禁用硬件加速对我没有影响。我也读过Android guide on making your app compatible with input methods,但没有认出任何解决方案。

我做错了什么吗?或者这是一个任何人有更多信息的错误?

3 个答案:

答案 0 :(得分:14)

您好我已经检查了您的代码。

请删除“ AndroidManifest.xml

中的以下行
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

然后检查然后调整屏幕大小。

如果有任何查询请告诉我。

答案 1 :(得分:3)

adjustResize模式肯定有效;您将在整个用户界面中看到它。

所以问题是:为什么没有为你的应用设置?

首先,您可以使用“adb shell dumpsys window”查看有关窗口的信息,其中包括由WindowManager.LayoutParams设置的软输入模式。打印的值是原始数字;在这里查看其含义:http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_NOTHING

如果你的窗口实际上没有adjustResize,那么你需要深入了解为什么没有设置。其他一切正常,如果你在活动上设置该模式,它将像往常一样在窗口上设置。你会想要寻找你正在做的其他事情,导致它在你的窗口中被改变。

如果您的窗口确实选择了adjustResize,那么由于某种原因,您的视图层次结构实际上并未调整大小。我所知道的平台上没有任何重大差异可能导致这种情况不起作用(而且你可以看到它在股票用户界面的其他地方也有效)。我建议在这里做的第一件事是使用HierarchyViewer来查看视图层次结构中发生的事情。

答案 2 :(得分:1)

当您的活动处于全屏模式时,

adjustResize将失败,如此处跟踪:https://code.google.com/p/android/issues/detail?id=5497&can=1&q=honeycomb%20fullscreen&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

我找到了一个对我有用的解决方法,你可能想尝试一下: https://stackoverflow.com/a/19494006/1241783

干杯