Comment dessiner un TextView en une image Bitmap (sans jamais être attirée sur l'écran)

De nombreux postes sont selon le thème de la "capture d'écran d'un TextView dans une image".

Bien, la différence à mon problème, c'est que d'abord le point de vue est attirée sur l'écran (avec tous les layouting et de mesurer le travail est déjà fait) et ensuite aspiré dans une Toile connecté à une image Bitmap.

Je veux juste créer un TextView à partir de zéro sans jamais être montré sur l'écran qui est traduit en une image Bitmap.

Celui-ci est la base de la configuration qui est déjà workin. Un clic sur le TextView dessine lui-même dans une image et à une ImageView.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="fill_parent"
    android:orientation="vertical" android:background="#fff">

    <TextView android:id="@+id/tv" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="The Quick Brown Fox Jumps Over The Lazy Dog."
        android:textSize="20dip" android:background="#abcdef"
        android:textColor="#000" android:padding="10dip"
        android:layout_margin="10dip" />

    <ImageView android:id="@+id/iv" android:layout_width="449px"
        android:layout_height="47px" android:background="#56789a"
        android:layout_margin="10dip" />
</LinearLayout>

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    findViewById(R.id.tv).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Bitmap bmp = Bitmap.createBitmap(449, 47, Bitmap.Config.ARGB_8888);
            Canvas canvas = new Canvas(bmp);

            v.draw(canvas);

            ImageView iv = (ImageView) findViewById(R.id.iv);
            iv.setImageBitmap(bmp);
        }
    });
}

Maintenant vient la problématique de la partie. Je vais créer un TextView en Java et je veux que cette personne à tirer tout droit dans un Bitmap. Après cela, je vais mettre cela à une ImageView. Je ne me suis jamais en cours d'exécution 🙁

Bitmap bmp = Bitmap.createBitmap(449, 47, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bmp);

TextView tv = new TextView(this);
tv.setText("THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG");
tv.setTextSize(55f);
tv.setTextColor(this.getResources().getColor(android.R.color.black));
tv.draw(canvas);

ImageView iv = (ImageView) findViewById(R.id.iv);
iv.setImageBitmap(bmp);

Cela ne fonctionne pas, ni dans onCreate, ni dans un OnClickListener. Expérimenter avec setDrawingCacheEnabled(), la mesure (la) et requestLayout() ne fonctionne pas non plus.

OriginalL'auteur DaRolla | 2011-09-04