仅限Android TileMode X或Y?

时间:2012-08-13 13:05:54

标签: android

在我的Activity的布局中,有一个背景,应该由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上不可用&lt; 16。 当我想在Android 2.3中仅通过X或Y重复我的背景时,我该怎么办? 谢谢。 附:背景的宽度和高度均为MATCH_PARENT

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分: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);