Градиентный фон становится белым при закрытии клавиатуры (только когда в виде списка есть элементы)

1

У меня есть градиент, который покрывает весь фон моего макета. Однако, когда я закрываю программную клавиатуру, у градиента требуется около 1 секунды для изменения размера до полной высоты. Это дает белый фон, который вы видите на рисунке ниже.

Я думал о чем-то вроде

android:windowSoftInputMode="adjustPan"

однако это было бы плохой практикой, потому что большая часть списка была бы скрыта под клавиатурой. Градиент:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:useLevel="false" >
    <gradient
        android:startColor="#0d2d70"
        android:endColor="#007dbc"
        android:useLevel="false"
        android:type="linear"
        android:angle="45" />
</shape>

Макет:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/gradient"
    android:padding="20dp" >

    <!-- input field is here -->

    <ListView
        android:id="@android:id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/input_licence"
        android:divider="#FFFFFF"
        android:dividerHeight="1dp"
        android:padding="5dp"
        android:scrollbarStyle="outsideOverlay" >
    </ListView>


</RelativeLayout>

Любые идеи по предотвращению пробелов?

Изображение 174551

Теги:
android-layout
android-listview

2 ответа

1
Лучший ответ

Я решил свою проблему. Вместо того, чтобы устанавливать фоновый рисунок для каждого действия, я устанавливаю его в styles.xml, как этот

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowBackground">@drawable/gradient</item>
</style>

Пустое пространство исчезает.

0

кажется, что представление не становится недействительным после выхода из клавиатуры. Хотя я не уверен в реальной проблеме. Я бы предложил вам аннулировать представление вручную с помощью кода. Как,

container.invalidate();

http://developer.android.com/reference/android/view/View.html#invalidate()

  • 0
    Где я должен поставить эту строку?
  • 0
    может быть потеря фокуса stackoverflow.com/questions/10627137/…
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню