在ImageView中插入文本

时间:2014-12-12 16:30:08

标签: java android canvas android-edittext

我需要在ImageView中插入Text,例如我需要在ImageView中使用EditText并进行缩放,绘制等。

我认为使用canvas,我希望当我单击ImageView时,EditText显示并在ImageView的任何位置写入,但我不需要正常的EditText。我需要透明的EditText只显示字符,如果它是ImageView的一部分,可以管理文本。

2 个答案:

答案 0 :(得分:1)

将TextView与 背景 属性设置为所需的图像。 这使得它易于管理。 例如:

 <TextView
      android:id="@+id/text1"
      android:layout_height="50dp"
      android:layout_width="100dp"
      android:text="Hello"
      android:background="@drawable/required_image"
 />

您可以动态更改Java中TextView的背景。

TextView text1 = (TextView) findViewById(R.id.text1);
text1.setBackgroundResource(R.drawable.img);

希望这会有所帮助。;)

答案 1 :(得分:1)

我解决它这几乎是我需要的,但编辑文本不可见并保存颜料。

public class DrawText extends ImageView {

Canvas canvas = new Canvas();
public String text = "";
float pointX = 50;
float pointY = 50;

public DrawText(Context context) {
    super(context);
}

@Override
public void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    Paint paint = new Paint();

    canvas.save();
    paint.setColor(Color.WHITE);
    paint.setTextSize(30);
    paint.setAntiAlias(true);
    canvas.drawText(text, pointX, pointY, paint);
    canvas.restore();
}

public DrawText(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public void setTexto(String text) {
    this.text = text;
    invalidate();
}

@Override
public void invalidate() {
    super.invalidate();
}

public void setXY(float pointX, float pointY) {
    this.pointX = pointX;
    this.pointY = pointY;
    System.out.println("ON TOUCH");
    System.out.println(pointX + pointY);

    invalidate();
}

我的主要活动

公共类MainActivity扩展了Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final EditText et = (EditText) (findViewById(R.id.editText));
    final com.example.imgintext.DrawText imgView = (com.example.imgintext.DrawText) findViewById(R.id.imageView1);
    et.setVisibility(View.INVISIBLE);
    et.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            imgView.setTexto(et.getText().toString());

            return false;
        }
    });

    imgView.setOnTouchListener(new OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            imgView.setXY(event.getX(), event.getY());
            et.requestFocus();
            return false;
        }
    });
}

最后我的XML

android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<com.example.imgintext.DrawText
    android:id="@+id/imageView1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:src="@drawable/tigres"
    android:clickable="true" />

<EditText
    android:id="@+id/editText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="142dp"
    android:ems="10" >
    <requestFocus />
</EditText>