如何给ListView加背景?

How to put a background on ListView?

我要与 ListView 一起开发 activity。我想为 ListView 添加背景,但是当我降低图像时,图像仍然在同一侧,但 ListView 会移动。我希望图像适应 ListView.

我的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/fondomax" >

<ListView 
    android:id="@+id/lista"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    ></ListView>

我试过 ScrollViewListView 只显示第一项。

创建自定义 class 扩展 ListView,并覆盖 dispatchDraw(...):

public class ScrollableBackgroundListView extends ListView {
    private Bitmap background;

    public ScrollableBackgroundListView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        this.background = BitmapFactory.decodeResource(getResources(), R.drawable.background);
    }

    @Override
    protected void dispatchDraw(@NonNull Canvas canvas) {
        int topPosition;
        if (getChildCount() > 0) {
            topPosition = getChildAt(0).getTop();
        } else {
            topPosition = 0;
        }

        int listViewWidth = getWidth();
        int listViewHeight = getHeight();

        int backgroundWidth = background.getWidth();
        int backgroundHeight = background.getHeight();

        for (int y = topPosition; y < listViewHeight; y += backgroundHeight) {
            for (int x = 0; x < listViewWidth; x += backgroundWidth) {
                canvas.drawBitmap(background, x, y, null);
            }
        }
        super.dispatchDraw(canvas);
    }
}