Tengo una imageView con una imagen, sobre esa imagen quiero colocar un texto. ¿Cómo puedo lograr eso?Android Texto sobre la imagen
Respuesta
Desea usar un diseño FrameLayout o Merge para lograr esto. La guía de desarrollo de Android tiene un gran ejemplo de esto aquí: Android Layout Tricks #3: Optimize by merging.
Hay muchas maneras. Usas RelativeLayout o AbsoluteLayout.
Con relativa, puede hacer que la imagen se alinee con el elemento primario del lado izquierdo, por ejemplo, y también alinee el texto con el elemento primario que queda ... luego puede usar márgenes, relleno y gravedad en la vista de texto para obtener se alineó donde desea sobre la imagen.
me encontré con este método por accidente. Pero es muy útil cuando quieres poner algo de texto sobre un botón de imagen o una vista de imagen. Ejemplo: coloque la temperatura actual sobre la imagen de las condiciones actuales. – Phobos
Usted podría
- hacer una nueva clase heredada de la clase ImageView y
- reemplazar el método
onDraw
. Llame primero alsuper.onDraw()
en ese método y al - y luego dibuje el texto que desea mostrar.
si lo hace de esa manera, puede usar esto 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
el problema con esta respuesta es que no puedes controlar los atributos de fondo como imageView. escala por ejemplo. –
Eso es cómo lo hice y funcionó exactamente como usted pidió dentro de un RelativeLayout:
<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>
Muchas gracias por este ejemplo. Traté de usar la vista de texto compuestaDibujado, pero allí no puedo configurar una URL de imagen. Pero es importante usar esta solución en un diseño relativo para que se reconozcan las configuraciones de layout_align. – AntonSack
poniendo la identificación del control en la alineación resuelto mucho, gracias –
Usted lo desea, puede tomar si de un lado diversa: 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>
el problema con esta respuesta es que no puedes controlar los atributos de fondo como imageView. escala por ejemplo. –
para ello se puede utilizar sólo una TextView con android:drawableLeft/Right/Top/Bottom
para colocar una Imagen en TextView. Además se puede utilizar un poco de relleno entre la Vista de Texto y el dibujable con android:drawablePadding=""
utilizar 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 usted no necesita una ImageView adicional. También es posible usar dos diseños en más de un lado de TextView.
El único problema al que se enfrentará al usar esto es que el dibujo no se puede escalar como un ImageView.
Prueba el código de abajo esto ayudará you`
<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 código de abajo esto le ayudará a
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();
}
}
});
}
}
- 1. Android: imagen sobre imagen
- 2. CSS: Cuadro + texto sobre la imagen
- 3. android: Extraiga el texto de la imagen
- 4. ¿Poner imagen de fondo sobre el texto?
- 5. Agregar texto sobre una imagen en Xcode
- 6. XAML cómo hacer flotar el texto sobre la imagen
- 7. ¿Cómo escribir texto sobre la imagen en canvas HTML5?
- 8. Superposición de texto sobre la imagen utilizando el posicionamiento relativo
- 9. texto centrado horizontal sobre la imagen a través de CSS
- 10. ¿Cómo escribo texto sobre una imagen en Android y la guardo?
- 11. Html Imagen sobre imagen
- 12. Android ¿Agregar imagen a texto (en vista de texto)?
- 13. Botón con texto Y una imagen (Android)
- 14. ¿Traducir una imagen a texto en Android?
- 15. Dibujar rectángulo sobre la imagen
- 16. Mostrar texto al colocar el cursor sobre una imagen
- 17. Cómo colocar texto sobre una imagen en css
- 18. Generar una imagen con texto personalizado en Android
- 19. android - agregando una cadena sobre una imagen extraíble?
- 20. OpenCV dibujar una imagen sobre otra imagen
- 21. Escribir texto transparente en la imagen
- 22. Cómo configurar el texto del botón de imagen (Android)?
- 23. Texto sobre fondo semitransparente
- 24. Problema del adaptador simple, texto + imagen en spinner. Java, Android
- 25. byte [] a la imagen android
- 26. Cómo detectar orientación de la imagen (texto)
- 27. "Editar" texto del usuario sobre la marcha?
- 28. Toque y arrastre la imagen en android
- 29. ¿Cómo poner texto sobre imágenes en html?
- 30. Colocar la imagen en las coordenadas Android
forma sencilla es toma un textView y configúralo como lo haces en ImageView. hará su trabajo fácil ... – Nepster
solo mira el enlace de abajo. espero que ayudará a u ... https://stackoverflow.com/questions/11100428/add-text-to-image-in-android-programmatically/26064945#26064945 –