如何给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>
我试过 ScrollView
但 ListView
只显示第一项。
创建自定义 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);
}
}
我要与 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>
我试过 ScrollView
但 ListView
只显示第一项。
创建自定义 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);
}
}