我有一个可平铺的图像,我想用作ListView
. setCacheColorHint(android.R.color.transparent)
为了正确查看背景图像,我已经使用setBackgroundDrawable()
.
我的问题是当我滚动时ListView
,图像保持在原位并且不会滚动。我假设这是正常行为,但我希望图像与文本一起滚动。
有什么办法可以做到这一点,而无需自行滚动ListView
或设置每个单元格视图的背景?我没有为此使用 XML,因为我希望它是动态的。
我有一个可平铺的图像,我想用作ListView
. setCacheColorHint(android.R.color.transparent)
为了正确查看背景图像,我已经使用setBackgroundDrawable()
.
我的问题是当我滚动时ListView
,图像保持在原位并且不会滚动。我假设这是正常行为,但我希望图像与文本一起滚动。
有什么办法可以做到这一点,而无需自行滚动ListView
或设置每个单元格视图的背景?我没有为此使用 XML,因为我希望它是动态的。
创建一个类并用 ListView :: 扩展它
public class MyCustomListView extends ListView
{
private Bitmap background;
public MyCustomListView(Context context, AttributeSet attrs)
{
super(context, attrs);
background = BitmapFactory.decodeResource(getResources(), R.drawable.yourImage);//yourImage means your listView Background which you want to move
}
@Override
protected void dispatchDraw(Canvas canvas)
{
int count = getChildCount();
int top = count > 0 ? getChildAt(0).getTop() : 0;
int backgroundWidth = background.getWidth();
int backgroundHeight = background.getHeight();
int width = getWidth();
int height = getHeight();
for (int y = top; y < height; y += backgroundHeight)
{
for (int x = 0; x < width; x += backgroundWidth)
{
canvas.drawBitmap(background, x, y, null);
}
}
super.dispatchDraw(canvas);
}
}
现在在您的 XML 文件中,取一个这样的列表视图 ::
//根据您的要求设置其他属性
<com.test.MyCustomListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
</com.test.MyCustomListView>