我需要在ImageView中插入Text,例如我需要在ImageView中使用EditText并进行缩放,绘制等。
我认为使用canvas,我希望当我单击ImageView时,EditText显示并在ImageView的任何位置写入,但我不需要正常的EditText。我需要透明的EditText只显示字符,如果它是ImageView的一部分,可以管理文本。
答案 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>