こんにちは私は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
実行時に画像が表示されません。私は何が間違っているのですか?
何もオーバーライドせずに回避する最も簡単な回避策は、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");
Androidドキュメント から:
BitmapDrawable(ビットマップビットマップ)このコンストラクターはAPIレベル4で非推奨になりました。BitmapDrawable(Resources、Bitmap)を使用して、ドローアブルがターゲット密度を正しく設定していることを確認します。
独自のビューを作成して(例については、 Android:カスタムビューの作成チュートリアル を参照)、画像とテキストをこのビューに配置することもできます。
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)。次に、レイアウトインフレータを使用して、親ビューでこのビューを膨らませます。
注:レイアウトインフレータを使用すると、親ビューに他のビューを追加できます。
imageview
にテキストを書き込むことはできませんが、extend
で書き込むことはできます。または、
ImageView
のlayout
と重なる要素を追加し、条件が真になったときにのみ表示することができます。
または、textView
を使用して、画像を背景として、または左/右への描画可能として表示できます。
Ps:ただし、オプション1は実装が簡単ですが、追加のレンダリングがあります。したがって、最初に他のオプションを検討してください。