web-dev-qa-db-ja.com

AndroidコーディングでImageViewにテキストを書く方法は?

こんにちは私はImageviewで数字を書こうとしています。 N個の質問の画像。ユーザーが入力した回答が正しければ、チェックマーク画像付きの質問番号で表示されます。それ以外の場合は、間違ったマーク画像付きの質問番号で表示されます。画像に質問番号を記入する必要があります。私のコードはここにあります:

    LinearLayout l_layout = (LinearLayout) findViewById(R.id.linear_view_report);
    LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1.0f);
    ImageView[] imgview=new ImageView[questions.length];
    for(int i=0;i<no_of_questions;i++)
    {
                if(userEnteredAnswers[i]==correct_answer[i]){           
                    Bitmap bm=BitmapFactory.decodeResource(getResources(),R.drawable.correct);
                    Canvas canvas = new Canvas(bm);
                    Paint paint = new Paint(); 
                    Paint.setColor(Color.BLACK); 
                    Paint.setTextSize(10); 
                    canvas.drawText(i, 5, 5, Paint);

                    imgview[i]=new ImageView(this);
                    imgview[i].setImageDrawable(new BitmapDrawable(bm));
                    l_layout.addView(imgview[i]);
                }
                else {          
                    Bitmap bm=BitmapFactory.decodeResource(getResources(),R.drawable.wrong);
                    Canvas canvas = new Canvas(bm);
                    Paint paint = new Paint(); 
                    Paint.setColor(Color.BLACK); 
                    Paint.setTextSize(10); 
                    canvas.drawText(i, 5, 5, Paint);

                    imgview[i]=new ImageView(this);
                    imgview[i].setImageDrawable(new BitmapDrawable(bm));
                    l_layout.addView(imgview[i]);
                }       
            }

この警告が表示されます:

The constructor BitmapDrawable(Bitmap) is deprecated

実行時に画像が表示されません。私は何が間違っているのですか?

12
Vignesh Bala

何もオーバーライドせずに回避する最も簡単な回避策は、TextViewを用意し、その背景をdrawableリソースで設定することだと思います。

例えば:

TextView t = (TextView)findViewById(R.id.my_text_view);
// setting gravity to "center"
t.setGravity(Gravity.CENTER);
t.setBackgroundResource(R.drawable.my_drawable);
t.setText("FOO");
18
Mena

Androidドキュメント から:

BitmapDrawable(ビットマップビットマップ)このコンストラクターはAPIレベル4で非推奨になりました。BitmapDrawable(Resources、Bitmap)を使用して、ドローアブルがターゲット密度を正しく設定していることを確認します。

独自のビューを作成して(例については、 Android:カスタムビューの作成チュートリアル を参照)、画像とテキストをこのビューに配置することもできます。

4
Skaard-Solo

1)。独自のレイアウトを作成する次のようにImage_TextView.xmlと言います。

<?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" >

    <RelativeLayout
        Android:layout_width="150dp"
        Android:layout_height="150dp"
        Android:gravity="center" >

        <ImageView
            Android:id="@+id/imgview"
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:layout_gravity="center"
            Android:adjustViewBounds="true"
            Android:cropToPadding="true"
            Android:scaleType="center"
            Android:src="@drawable/box" />

        <RelativeLayout
            Android:layout_width="150dp"
            Android:layout_height="35dp"
            Android:layout_alignParentBottom="true"
            Android:layout_alignParentLeft="true"
            Android:layout_marginBottom="0dp"
            Android:background="#80666666" >

            <TextView
                Android:id="@+id/text"
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                Android:layout_centerHorizontal="true"
                Android:layout_centerVertical="true"
                Android:text="Hello" 
                Android:textColor="#FFFFFF"
                Android:textStyle="bold"/>
        </RelativeLayout>
    </RelativeLayout>

</LinearLayout>

これにより、テキスト付きの画像が作成されます。

2)。次に、レイアウトインフレータを使用して、親ビューでこのビューを膨らませます。

注:レイアウトインフレータを使用すると、親ビューに他のビューを追加できます。

3
Munish Thakur

imageviewにテキストを書き込むことはできませんが、extendで書き込むことはできます。または、

  1. ImageViewlayoutと重なる要素を追加し、条件が真になったときにのみ表示することができます。

  2. または、textViewを使用して、画像を背景として、または左/右への描画可能として表示できます。

Ps:ただし、オプション1は実装が簡単ですが、追加のレンダリングがあります。したがって、最初に他のオプションを検討してください。

2
Ankit