web-dev-qa-db-ja.com

Androidテキストに画像を追加(テキストビュー)?

ここに最初の投稿=)私はこの答えを探していましたが、見つけることができませんでした。私がやりたいのは、テキストをいくつか用意してから、画像を追加してから、残りのテキストを追加することです。例えば:

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

私は探していましたが、画像にテキストを追加するか、画像ビューに画像を追加するだけです。アプリは主にテキストですが、画像が含まれているため、それは私が望んでいることではないと思います。

だから私の質問は:テキストに画像を追加するにはどうすればよいですか?

ありがとう


更新:R.daneel.olivawからのアドバイスを使用しましたが、うまくいきました=)

しかし、私には問題があります。 「abc」としましょう。ここで、bの位置をスパン可能に設定します。しかし、テキストを削除しようとしてbを削除すると、次に何かを書いたときに、スパンアブルで使用した画像になります。これを修正するにはどうすればよいですか?誰かアドバイスがありますか?ありがとう=)

18
user1162299

Spannableインターフェースを探していると思います。これを使用すると、テキストビューに画像を追加できます。

この リンク が役立つかもしれません。

enter image description here

25
R.daneel.olivaw

最善のオプションは、独自のビューを作成し、テキストにcanvas.drawText()を使用し、画像にcanvas.drawBitmap()を使用してonDraw()メソッドをオーバーライドすることです。

Canvasのドキュメントを参照してください: http://developer.Android.com/reference/Android/graphics/Canvas.html

画面の中央にテキストを描画する例を次に示します。

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

私が知っているように、それを行う方法はありません。

しかし、webviewと生成されたhtmlを使用すると、同様のことができます。

コンテンツからhtmlを生成し、それをwebviewにロードし、webview設定をズームコントロールなしに設定します。

0
lulumeya

これは画像ゲッターで行うことができます: Html.ImageGetter

画像ごとにHTMLタグを使用する必要があります。

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

これを文字列に追加すると、機能します

0
Prassanna Kumar