web-dev-qa-db-fra.com

Android Ajouter une image au texte (en mode d'affichage du texte)?

premier post ici =) Je cherchais cette réponse et je n'ai pas réussi à la trouver. Ce que je veux faire, c'est avoir du texte, puis ajouter une image, puis reste du texte. Par exemple:

                             ____
                            |   |
Hi there, this is the photo |___|, hope you like it..

J'ai cherché, mais tout ce que je peux trouver, c'est ajouter du texte à une image ou une image à une autre. Je ne pense pas que ce soit ce que je souhaite, car l'application est principalement du texte mais avec des images.

Ma question est donc la suivante: comment ajouter une image au texte?

merci


UPDATE: J'ai utilisé les conseils de R.daneel.olivaw et ça a fonctionné Nice =)

Mais j'ai un problème. disons que j'ai: "a b c" où je règle la position de b comme spanable. Mais si j'essaie de supprimer le texte et que je supprime b, la prochaine fois que j'écrirai quelque chose, ce sera l'image que j'ai utilisée dans spanable. Comment puis-je corriger cela? Quelqu'un at-il un conseil? merci =)

18
user1162299

Je pense que vous recherchez l'interface Spannable. En l'utilisant, vous pouvez ajouter des images à une vue de texte.

Ce lien pourrait aider.

enter image description here

25
R.daneel.olivaw

votre meilleure option est de créer votre propre vue et de remplacer la méthode onDraw () en utilisant canvas.drawText () pour le texte et canvas.drawBitmap () pour les images.

Voir la documentation Canvas: http://developer.Android.com/reference/Android/graphics/Canvas.html

Voici un exemple qui dessine du texte au centre de l'écran:

public class OverlayView extends View {

public OverlayView(final Context context) {
    super(context);
}

/**
 * Draw camera target.
 */
@Override
protected void onDraw(final Canvas canvas) {

    // view size
    int width = getWidth();
    int height = getHeight();

    float square_side = height - width * 0.8f; // size of the target square

    Paint paint = new Paint();
    Paint.setAntiAlias(true);
    Paint.setStyle(Paint.Style.FILL);

    // text size is 5% of the screen height
    Paint.setTextSize(height * 0.05f);

    // draw message depending of its width
    String message = getResources().getString(R.string.photo_target_text);

    float message_width = Paint.measureText(message);

    Paint.setColor(getResources().getColor(R.color.color_foreground));
    canvas.drawText(message, (width - message_width) / 2,
            (height - square_side) / 4, Paint);

    super.onDraw(canvas);
}

}
2
ndeverge

comme je le sais, il n'y a aucun moyen de le faire.

mais lorsque vous utilisez webview et que vous générez du code HTML, vous pouvez en faire une seule.

générer du HTML à partir de votre contenu et le charger dans Webview, définissez les paramètres de Webview sur aucun contrôle de zoom.

0
lulumeya

Cela peut être fait avec une image getter: Html.ImageGetter

Vous devrez utiliser des balises HTML pour chaque image.

0
Lumis
< string name="text" > "Hi there, this is the photo [img src=img.jpge/] , hope you like it. < / string>

Ajoutez ceci à votre chaîne et cela fonctionnera 

0
Prassanna Kumar