web-dev-qa-db-fra.com

Ajout de texte à ImageView dans Android

Je veux utiliser un ImageView pour montrer un message de façon élégante.

Je souhaite donc ajouter du texte à cette ImageView. Comment faire ça?

44
Shashi

Pour ajouter un texte à votre ImageView, vous pouvez faire ceci:

<RelativeLayout> // Only works inside a RelativeLayout
    <ImageView
        Android:id="@+id/myImageView"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:src="@drawable/myImageSouce" />

    <TextView
        Android:id="@+id/myImageViewText"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignLeft="@+id/myImageView"
        Android:layout_alignTop="@+id/myImageView"
        Android:layout_alignRight="@+id/myImageView"
        Android:layout_alignBottom="@+id/myImageView"
        Android:layout_margin="1dp"
        Android:gravity="center"
        Android:text="Hello"
        Android:textColor="#000000" />
 </RelativeLayout>
82
Alesqui

Vous pouvez également utiliser un TextView et définir l'image d'arrière-plan sur ce que vous vouliez dans ImageView. De plus, si vous utilisiez ImageView comme un bouton, vous pouvez le définir sur click -able

Voici un code de base pour un TextView qui montre une image avec du texte dessus.

<TextView
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:background="@drawable/your_image"
    Android:text="your text here" />
26
Barrie Galitzky

La meilleure option pour utiliser du texte et des images dans une seule vue est la suivante:

<TextView
        Android:id="@+id/textView1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"

        Android:drawableBottom="@drawable/ic_launcher"

        Android:text="TextView" />
20
Sagar V.

Utilisez drawalbeLeft/Right/Bottom/Top dans TextView pour rendre l’image à la position respective.

        <TextView
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:drawableLeft="@drawable/image"    
        Android:text="@strings/text" 
        />
13
Pawan Maheshwari

Je sais que cette question a disparu, mais si quelqu'un d'autre tombait sur cela, je voulais le leur faire savoir. Cela peut sembler une chose peu intuitive à faire, mais vous pouvez utiliser un bouton avec un clic sur clic défini sur faux ou quoi que ce soit. En effet, un bouton permet de définir drawableLeft, drawableRight, drawableTop, etc. en plus du texte.

  <Button
  Android:id="@+id/button1"
  Android:layout_width="match_parent"
  Android:layout_height="match_parent"
  Android:background="@drawable/border_box1"
  Android:drawableLeft="@drawable/ar9_but_desc"
  Android:padding="20dp"
  Android:text="@string/ar4_button1"
  Android:textColor="@color/white"
  Android:textSize="24sp" />

Nouvelle information: Un bouton peut avoir des icônes dans drawableLeft, drawableRight, drawableTop et drawableBottom. Cela rend un bouton standard beaucoup plus flexible qu'un bouton d'image. La gauche, la droite, le haut, etc. est la relation avec le texte dans le bouton. Vous pouvez avoir plusieurs dessins sur le bouton, par exemple un à gauche, un à droite et le texte au milieu.

7
Andrew S

Pour dessiner du texte directement sur une toile, procédez comme suit:

  1. Créer un objet Paint membre dans le constructeur myImageView

    Paint mTextPaint = new Paint();
    
  2. Utilisez canvas.drawText Dans votre méthode myImageView.onDraw():

    canvas.drawText("My fancy text", xpos, ypos, mTextPaint);
    

Explorez la documentation des classes Paint et Canvas pour ajouter des effets de fantaisie.

3
Peter

Avec FrameLayout, vous pouvez placer un texte au-dessus d'une vue d'image, la disposition du cadre contenant à la fois une imageView et une textView.

Si cela ne vous suffit pas et que vous voulez quelque chose de plus sophistiqué comme du texte 'dessiné', vous devez dessiner le texte sur une toile - un exemple est ici: Comment dessiner du texte RTL (arabe) sur un bitmap et le commander correctement ?

3
Mathias Conradt
    <FrameLayout
        Android:layout_width="wrap_content"
        Android:layout_height="match_parent"
        Android:layout_gravity="center_horizontal"
        Android:layout_weight="30" >

        <ImageButton
            Android:id="@+id/imgbtnUploadPendingPods"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:contentDescription="@string/hello_world"
            Android:src="@drawable/upload_icon" />

        <TextView
            Android:id="@+id/textView1"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:gravity="center_horizontal"
            Android:paddingTop="30dp"
            Android:text="@string/pendingpods"
            Android:textAppearance="?android:attr/textAppearanceSmall" />
    </FrameLayout>

Vous pouvez utiliser le TextView dans le même but, mais si vous voulez utiliser la même chose avec le ImageView, vous devez créer une classe et étendre le ImageView, puis utiliser la méthode onDraw () pour peindre le texte sur le canevas. pour plus de détails, visitez le site http://developer.Android.com/reference/Android/graphics/Canvas.html

1
jitain sharma