Colocar una vista de texto en la parte superior de la vista de la imagen en Android

  • Tengo una vista de lista, que tiene una única imageview que se puede desplazar verticalmente
  • Estoy tratando de colocar una textview de textview sobre Imageview
  • Ambas vistas deben ser visibles

  1. Es posible ?
  2. Si es así, ¿cómo hacerlo programáticamente?
  3. ¿Qué cambios debería hacer?

list_view_item_for_images.xml

     

Da una salida como abajo

enter image description here

Cómo hacer algo como a continuación

enter image description here

nota :: Los platos 1 y 2 son textviews

Esto debería darle el diseño requerido:

 < ?xml version="1.0" encoding="utf-8"?>     

Juega con el android:layout_marginTop="20dp" para ver cuál te conviene más. Use la vista de texto id para establecer dinámicamente el valor de android:text .

Como RelativeLayout astack sus elementos secundarios, la definición de TextView después de ImageView lo coloca sobre ‘el’ ImageView.

NOTA: Se pueden obtener resultados similares usando un FrameLayout como padre, junto con la ganancia de eficiencia sobre el uso de cualquier otro contenedor de Android. Gracias a Igor Ganapolsky (ver comentario más abajo) por señalar que esta respuesta necesita una actualización.

Prueba esto:

    

Espero que esto pueda ayudarte.

puedes usar framelayout para lograr esto.

cómo usar framelayout

     

ref: tutorialspoint

simplemente arrastre y suelte TextView sobre ImageView en eclipse

     

Y este es el resultado del xml anterior enter image description here

Como mencionó en OP, necesita superponer Text en ImageView forma programática. Puede obtener ImageView dibujable y escribir en él con la ayuda de ponerlo en Canvas y Paint .

  private BitmapDrawable writeTextOnDrawable(int drawableId, String text) { Bitmap bm = BitmapFactory.decodeResource(getResources(), drawableId).copy(Bitmap.Config.ARGB_8888, true); Typeface tf = Typeface.create("Helvetica", Typeface.BOLD); Paint paint = new Paint(); paint.setStyle(Style.FILL); paint.setColor(Color.WHITE); paint.setTypeface(tf); paint.setTextAlign(Align.CENTER); paint.setTextSize(11); Rect textRect = new Rect(); paint.getTextBounds(text, 0, text.length(), textRect); Canvas canvas = new Canvas(bm); canvas.drawText(text, xPos, yPos, paint); return new BitmapDrawable(getResources(), bm); } 

usted puede intentar esto también Yo uso solo framelayout.

     

Tal vez deberías escribir primero ImageView y luego TextView. Eso puede ayudar a veces. Eso es simple, pero espero que ayude a alguien. 🙂