2012-05-23 8 views
6

Ho un TextView e un bitmap che può essere ripetuto solo orizzontalmente. Voglio impostare lo sfondo della mia visualizzazione di testo e ripeterlo solo sull'asse X. Dopo aver guardato intorno ho visto che puoi farlo solo tramite codice e non in XML. Ho creato un BitmapDrawable utilizzando :,Android BitmapDrawable setTileModeX non funziona su TextView

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

Tuttavia, anche con questo modo drawable si ripete anche sull'asse Y. Questo è in Honeycomb 3.2.

Qualcuno può far luce su questo, forse fornire un esempio di esso funziona?

+0

È possibile creare un disegnabile bitmap che si riferisce all'immagine reale e imposta l'attributo TILEMODE. –

+0

Non capisco cosa intendi ... – dnkoutso

risposta

1

// provare questo

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); 

// provare anche questo

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