Подтвердить что ты не робот

Honeycomb (3.1) adjustResize больше не работает?

В моей деятельности есть android: windowSoftInputMode = "adjustResize" и ведет себя соответственно в Android 2.1:

Перед появлением мягкой клавиатуры

Before soft keyboard appears

С клавиатурой

Keyboard behavior in 2.1 (good)

Однако в Honeycomb мягкая клавиатура не меняет размер моего макета, вместо этого она закрывает кнопки:

Keyboard behavior in Honeycomb (bad)

Такое же поведение на вкладке Galaxy 10 дюймов и Motorola Xoom.

Я несколько раз переделывал свой макет, пытаясь заставить его быть совместимым с Honeycomb, но безрезультатно. Мягкая клавиатура выдвинет вид EditText, но не кнопки.

Вот простой проект, демонстрирующий проблему.

Изменить. Ссылка исправлена.

Используемый макет:

<?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 о том, как ваше приложение совместимо с методами ввода, но не распознало какое-либо решение там.

Я делаю что-то явно неправильно? Или это ошибка, о которой у кого больше информации?

4b9b3361

Ответ 1

Привет, я проверил ваш код.

удалите строку ниже в AndroidManifest.xml "

android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"

а затем проверьте, настройте размер экрана.

Если какой-либо запрос plz сообщит мне.

Ответ 2

Режим adjustResize определенно работает; вы увидите это в действии во всем пользовательском интерфейсе.

Итак, вопрос: почему он не установлен для вашего приложения?

Во-первых, вы можете использовать "окно dumpsys оболочки adb", чтобы увидеть информацию о вашем окне, которая будет включать режим мягкого ввода, устанавливаемый его WindowManager.LayoutParams. Значение, напечатанное там, - это необработанное число; посмотрите здесь его значение: http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#SOFT_INPUT_ADJUST_NOTHING

Если ваше окно на самом деле не настроено, отредактируйте там, тогда вам нужно будет заглянуть и посмотреть, почему это не получается. Все остальное нормально, если вы установите этот режим в своей активности, он будет установлен в окне, как всегда. Вам нужно искать что-то еще, что вы делаете, что вызывает его изменение в вашем окне.

Если ваше окно имеет установленное значениеРазрешение, то по какой-то причине ваша иерархия просмотров фактически не изменяет размер. На платформе нет существенных различий, которые могут привести к тому, что это не сработает (и снова вы увидите, что он работает в другом месте в пользовательском интерфейсе). Первое, что я предлагаю сделать здесь, - это использовать HierarchyViewer для просмотра того, что происходит в иерархии вашего представления.

Ответ 3

adjustResize завершится неудачно, когда ваша активность будет в полноэкранном режиме, как показано здесь: https://code.google.com/p/android/issues/detail?id=5497&can=1&q=honeycomb%20fullscreen&colspec=ID%20Type%20Status%20Owner%20Summary%20Stars

Я нашел обходной путь, который работал у меня, вы можете попробовать: fooobar.com/info/16389/...

Приветствия