Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Texto de Android sobre la imagen

Tengo una imageView con una imagen, sobre esa imagen quiero colocar un texto. ¿Cómo puedo lograrlo?

  • ImageView rellena el ancho o altura de los padres, pero mantiene la relación de aspecto
  • ¿Cómo preparo imágenes para todas las resoluciones de Android?
  • Mostrar ImageView de forma programática
  • ¿Cuándo (si es que) debería usar Bitmap.recycle ()?
  • Cómo cambiar el origen de ImageView en android
  • Imagen de alta resolución - OutOfMemoryError
  • ¿Cómo anular los elementos definidos en un proyecto de biblioteca de Android?
  • Tomar la imagen de la cámara personalizada se estira cuando guardar en ImageView
  • 9 Solutions collect form web for “Texto de Android sobre la imagen”

    Así es como lo hice y funcionó exactamente como usted pidió:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativelayout" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/myImageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/myImageSouce" /> <TextView android:id="@+id/myImageViewText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/myImageView" android:layout_alignTop="@id/myImageView" android:layout_alignRight="@id/myImageView" android:layout_alignBottom="@id/myImageView" android:layout_margin="1dp" android:gravity="center" android:text="Hello" android:textColor="#000000" /> </RelativeLayout> 

    PS: Sólo funciona dentro de un RelativeLayout

    Es posible que desee tomar si de un lado diferente: Parece más fácil tener un TextView con un dibujable en el fondo:

      <TextView android:id="@+id/text" android:background="@drawable/rounded_rectangle" android:layout_width="wrap_content" android:layout_height="wrap_content" </TextView> 

    Desea utilizar un FrameLayout o un diseño de combinación para lograr esto. Android dev guía tiene un gran ejemplo de esto aquí: Android Layout Tricks # 3: Optimizar mediante la fusión .

    Hay muchas maneras. Utilice RelativeLayout o AbsoluteLayout.

    Con relativo, puede hacer que la imagen se alinee con el padre en el lado izquierdo por ejemplo y también tiene el texto alinear al padre a la izquierda también … entonces usted puede utilizar los márgenes y el relleno y la gravedad en la vista del texto para conseguirlo alineado donde usted Desea sobre la imagen.

    Usted podría

    • Crear una nueva clase heredada de la clase ImageView y
    • onDraw el Método onDraw . Llame a super.onDraw() en ese método primero y
    • Y luego dibujar un poco de texto que desea mostrar.

    Si lo haces así, puedes usarlo como un único componente de diseño que facilita el diseño junto con otros componentes.

    Puede utilizar un TextView y cambiar su fondo a la imagen que desea utilizar

    Para ello, sólo puede utilizar un TextView con android:drawableLeft/Right/Top/Bottom para colocar una imagen en TextView. Además puedes usar un relleno entre el TextView y el drawable con android:drawablePadding=""

    Utilícelo de esta manera:

     <TextView android:id="@+id/textAndImage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:drawableBottom="@drawable/yourDrawable" android:drawablePadding="10dp" android:text="Look at the drawable below"/> 

    Con esto no necesita un ImageView adicional. También es posible utilizar dos trazos en más de un lado del TextView.

    El único problema que se enfrentará al utilizar esto, es que el dibujable no se puede escalar el camino de un ImageView.

    Prueba el siguiente código, esto te ayudará

      <RelativeLayout android:layout_width="match_parent" android:layout_height="150dp"> <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:src="@drawable/gallery1"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#7ad7d7d7" android:gravity="center" android:text="Juneja Art Gallery" android:textColor="#000000" android:textSize="15sp"/> </RelativeLayout> 

    El siguiente código le ayudará

     public class TextProperty { private int heigt; //读入文本的行数private String []context = new String[1024]; //存储读入的文本/* *@parameter wordNum * */ public TextProperty(int wordNum ,InputStreamReader in) throws Exception { int i=0; BufferedReader br = new BufferedReader(in); String s; while((s=br.readLine())!=null){ if(s.length()>wordNum){ int k=0; while(k+wordNum<=s.length()){ context[i++] = s.substring(k, k+wordNum); k=k+wordNum; } context[i++] = s.substring(k,s.length()); } else{ context[i++]=s; } } this.heigt = i; in.close(); br.close(); } public int getHeigt() { return heigt; } public String[] getContext() { return context; } 

    }

     public class MainActivity extends AppCompatActivity { private Button btn; private ImageView iv; private final int WORDNUM = 35; //转化成图片时 每行显示的字数private final int WIDTH = 450; //设置图片的宽度@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.imageView); btn = (Button) findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { int x=5,y=10; try { TextProperty tp = new TextProperty(WORDNUM, new InputStreamReader(getResources().getAssets().open("1.txt"))); Bitmap bitmap = Bitmap.createBitmap(WIDTH, 20*tp.getHeigt(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); Paint paint = new Paint(); paint.setColor(Color.WHITE); paint.setTextAlign(Paint.Align.LEFT); paint.setTextSize(20f); String [] ss = tp.getContext(); for(int i=0;i<tp.getHeigt();i++){ canvas.drawText(ss[i], x, y, paint); y=y+20; } canvas.save(Canvas.ALL_SAVE_FLAG); canvas.restore(); String path = Environment.getExternalStorageDirectory() + "/image.png"; System.out.println(path); FileOutputStream os = new FileOutputStream(new File(path)); bitmap.compress(Bitmap.CompressFormat.PNG, 100, os); //Display the image on ImageView. iv.setImageBitmap(bitmap); iv.setBackgroundColor(Color.BLUE); os.flush(); os.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); } 

    }

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.