2

在我的活动布局中,有一个背景,应该由 Y 重复。重复背景没有问题,当它在 X 和 Y 上重复时(只需添加android:tileMode="repeat")。此外,在 Android API 15 上执行此操作也没有问题:

RelativeLayout layout = (RelativeLayout) findViewById(R.id.container_layout);

BitmapDrawable bg = (BitmapDrawable)getResources().getDrawable(R.drawable.my_repeating_bg);
bg.setTileModeX(TileMode.REPEAT);`
layout.setBackground(bg);

但是该方法setBackground(<BitmapDrawable>)在 Android API < 16 上不可用。当我想在 Android 2.3 中仅按 X 或 Y 重复我的背景时该怎么办?谢谢。PS背景的宽度和高度都是MATCH_PARENT

4

2 回答 2

5

您可以drawable在此格式的文件夹(或任何可绘制文件夹)中创建一个 xml 文件。

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/my_repeating_bg"
    android:tileMode="repeat" />

然后做:

layout.setBackgroundResource(R.drawable.name_of_xml_drawable);

如果布局的宽度设置为wrap_content,则只会平铺 Y。如果布局的高度设置为wrap_content,则只会平铺 X。将两者设置为match_parentfill_parent将平铺 X 和 Y。

于 2012-08-13T13:11:03.767 回答
4

好的,所以我找到了答案。我只需要检查版本并使用适当的方法。

    RelativeLayout layout = (RelativeLayout) fragmentView.findViewById(R.id.container);
    BitmapDrawable bg = (BitmapDrawable)fragmentView.getResources().getDrawable(R.drawable.background);
    bg.setTileModeY(TileMode.REPEAT);
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN)
        layout.setBackgroundDrawable(bg);
    else
        layout.setBackground(bg);
于 2012-08-14T07:05:49.597 回答