您好我一直在尝试在Imageview上编写Numbers。 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
图像未在运行时显示。 我做错了什么?
答案 0 :(得分:17)
我认为最简单的解决方法是在不覆盖任何内容的情况下使用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");
答案 1 :(得分:4)
BitmapDrawable(位图位图) 在API级别4中不推荐使用此构造函数。使用BitmapDrawable(Resources,Bitmap)确保drawable已正确设置其目标密度。
您还可以创建自己的视图(有关示例,请参阅Android: Creating Custom Views tutorial),并将图像和文本放在此视图中。
答案 2 :(得分:3)
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 :(得分:2)
无法在imageview
上撰写文字,但您可以extend
这样做。或者,
您可以在ImageView
中添加与layout
重叠的元素,并且只有在您的条件成立时才会显示该元素。
或者,您可以使用textView
来显示图片,作为背景或左/右绘图。
Ps:但是,选项1更容易实现,但它会有额外的渲染。所以先考虑其他选择。