Фон нижнего колонтитула представления списка на Android 2.3.3

Этот странный. У меня есть список, который является частью Relative Layout. Я установил фон для этого относительного макета и сделал фон представления списка прозрачным.

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

Затем я получил обновление Verizon Motorola Droid X для 2.3.3 (раньше было 2.2). После обновления я снова запустил приложение, и вот что происходит.

Если в моем представлении списка только одна строка, я вижу под ним белую область, а не свой собственный фон. Но если он имеет, скажем, 100 строк и, таким образом, покрывает весь экран, я не увижу этого странного белого фона. В моем относительном макете ширина и высота установлены на "fill_parent".

Я разместил свой XML внизу. Кто-нибудь еще сталкивался с этой проблемой, или я совершаю действительно глупую ошибку.

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:background = "@drawable/background" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <ListView   android:id = "@+id/listQueue"
                android:layout_width = "fill_parent"
                android:layout_height = "fill_parent"
                android:layout_below = "@id/homeScreenBanner"
                android:background="@android:color/transparent"
                android:divider="@drawable/separator"
                android:scrollingCache="false"/>
</RelativeLayout>

EDIT:

Думаю, я нашел решение этой проблемы:

Изменил атрибут layout_height на wrap_content, и это сработало как шарм. :)

После измененной строки. android: layout_height = "wrap_content"

22
задан Yoni Samlan 1 October 2011 в 21:43
поделиться

1 ответ

Я написал класс, который можно использовать в Android 2.1 / 2, который будет правильно работать в 2.3, используя отражение с ListViews:

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.util.AttributeSet;
import android.widget.ListView;

public class TransparentListView extends ListView {

    private void makeTransparent() {
        if (Build.VERSION.SDK_INT >= 9) {
            try {

                Method overscrollFooterMethod = 
                    TransparentListView.class.getMethod("setOverscrollFooter", new Class[] {Drawable.class});
                Method overscrollHeaderMethod = 
                    TransparentListView.class.getMethod("setOverscrollHeader", new Class[] {Drawable.class});


                try {
                    overscrollFooterMethod.invoke(this, new Object[] {null});
                    overscrollHeaderMethod.invoke(this, new Object[] {null});
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (NoSuchMethodException e) {
                e.printStackTrace();
            }
        }
    }

    public TransparentListView(Context context) {
        super(context);
        this.makeTransparent();
    }

    public TransparentListView(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.makeTransparent();
    }

    public TransparentListView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        this.makeTransparent();
    }
}

Использовать его в XML следующим образом:

<com.myapp.TransparentListView android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:transcriptMode="alwaysScroll"
    android:layout_weight="1"
    android:dividerHeight="0dip"
    android:divider="#00000000"
    android:cacheColorHint="#00000000"
/>  
6
ответ дан 29 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: