Android BitmapDrawable setTileModeX在TextView上不起作用

时间:2012-05-23 20:00:54

标签: android android-layout background android-xml

我有一个TextView和一个只能水平重复的位图。我想设置textview的背景并仅在X轴上重复它。环顾四周后,我看到你只能通过代码而不是XML来实现。我使用:,

创建了BitmapDrawable
BitmapDrawable bg = new BitmapDrawable(r, BitmapFactory.decodeResource(r, R.drawable.my_drawable));
bg.setTileModeX(Shader.TileMode.REPEAT);
setBackgroundDrawable(bg);

然而,即使采用这种方式,也可以在Y轴上重复绘制。这是在Honeycomb 3.2中。

有人可以对此有所了解,或许可以提供一个有效的例子吗?

1 个答案:

答案 0 :(得分:1)

//试试这个

BitmapDrawable bg = new BitmapDrawable(r, BitmapFactory.decodeResource(r,R.drawable.my_drawable));

        int width = view.getWidth();
        int intrinsicHeight = bd.getIntrinsicHeight();
        Rect bounds = new Rect(0,0,width,intrinsicHeight);
       bg.setTileModeX(Shader.TileMode.REPEAT);
        bg.setBounds(bounds);
        Bitmap bitmap = Bitmap.createBitmap(bounds.width(), bounds.height(), bg.getBitmap().getConfig());
        Canvas canvas = new Canvas(bitmap);
        bg.draw(canvas);
        BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);
yourTxtView.setBackgroundDrawable(bg);

//试试这个

bg.setTileModeX(1); //Repeats the bitmap in both direction.
bg.setTileModeY(-1);//Do not tile the bitmap. This is the default value.