2014-12-12 3 views
-1

Привет, у меня есть проблема, и я не могу найти документацию для ее устранения. Мне нужно вставить текст в ImageView, например, мне нужно использовать EditText внутри ImageView и делать масштабирование, рисовать и т. Д. Я думаю, что с холстом , я хочу, когда я нажимаю ImageView, чтобы EditText отображался и записывался в любом месте ImageView, но мне не нужен нормальный EditText, мне нужен прозрачный EditText, который показывает только символы и может управлять текстом, если это было частью ImageView, я не знаю если я могу хорошо объяснить, если у вас есть документация, плагины или примеры для этого, пожалуйста, поделитесь, спасибо в консультации !.Текст Android в ImageView

+0

но изображения добавляется динамически и текст слишком , Всегда разные изображения, и мне нужно сделать масштабирование и краску и т. Д. В представлении. – JDeLeon92

ответ

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 расширяет активность {

@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> 

1

Используйте TextView с background Атрибут, установленный на изображение, требуется. Это упрощает управление. Например:

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

Вы можете изменить цвет фона на TextView в Java динамически.

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

Надеется, что это помогает .;)