12

嗨,我一直在尝试在 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

图像在运行时不显示。我究竟做错了什么?

4

4 回答 4

18

我相信不覆盖任何东西的最简单的解决方法是拥有一个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");
于 2013-07-23T12:21:54.003 回答
4

Android 文档

BitmapDrawable(Bitmap bitmap) 此构造函数在 API 级别 4 中已弃用。使用 BitmapDrawable(Resources, Bitmap) 确保可绘制对象已正确设置其目标密度。

您还可以创建自己的视图(请参阅Android:创建自定义视图教程以获取示例)并将图像和文本放在此视图中。

于 2013-07-23T12:12:44.667 回答
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)。然后使用布局充气器在你的父视图中充气这个视图。

注意:使用布局充气器,您可以将其他视图添加到父视图。

于 2013-07-23T12:23:42.917 回答
2

它不可能在上面写文字imageview,但你可以extend这样做。或者,

  1. ImageView您可以在 中添加一个与 重叠的元素layout,并使其仅在您的条件为真时可见。

  2. 或者,您可以textView用来显示图像,作为背景或作为左/右的可绘制对象..

ps:不过,选项1更容易实现,但是会有额外的渲染。所以首先考虑另一个选项。

于 2013-07-23T12:10:16.373 回答