2010-03-18 12 views
8

¿Hay alguna forma de envolver un TextView alrededor de una imagen? Es lo típico que la gente hace en CSS como esto http://www.echoecho.com/htmlimages08.htmAndroid: la interfaz de usuario para el texto ajusta una imagen

Gracias,
Tee

+0

Si desea para usar solo la flotante izquierda y para teléfonos Android a partir de la versión 2.2, puede usar la solución que he descrito en mi respuesta a otra pregunta aquí: http://stackoverflow.com/a/8463221/427225 – vorrtex

Respuesta

4

Por qué no utilizar un WebView? Tendrás más libertad en el futuro para personalizar el diseño de esa manera.

Si un WebView es demasiado pesado para su caso de uso, probablemente necesite renderizar el texto y la imagen manualmente. Puede encontrar información relevante en this android-developers thread.

0

Otra forma de lograr esto es hacer una imagen que contenga el texto y las imágenes que desea mostrar. Obviamente, peso más pesado y una solución alternativa.

Puede hacerlo usando webview y una solución para cargar contenido local. A partir de la 1.0 SDK de la vista web no puede cargar contenido local sin los arounds de trabajo descritos en estos artículos:

http://www.techjini.com/blog/2009/01/10/android-tip-1-contentprovider-accessing-local-file-system-from-webview-showing-image-in-webview-using-content/

y

http://blog.tourizo.com/2009/02/how-to-display-local-file-in-android.html

enlace de Roman es un hilo que le diga que puede' t hacerlo con la vista de texto, por lo que no es una opción en este punto.

15

He escrito un widget para esto: http://code.google.com/p/android-flowtextview/

enter image description here

Un widget se extiende (y por lo tanto se comporta como) un RelativeLayout lo que puede añadir puntos de vista del niño. La clase expone un método setText() que le permite establecer el texto de la vista (simple o spannable) y luego llama a invalidate() para representar el texto. El texto completará cualquier espacio dejado por las vistas secundarias.

Ejemplo de uso:

<com.pagesuite.flowtext.FlowTextView 
      android:id="@+id/tv" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
       android:padding="10dip" 
       android:src="@drawable/android" /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentRight="true" 
       android:layout_marginTop="400dip" 
       android:padding="10dip" 
       android:src="@drawable/android2" /> 
     </com.pagesuite.flowtext.FlowTextView> 

Luego en el código:

tv = (FlowTextView) findViewById(R.id.tv);    
Spanned spannable = Html.fromHtml("<html ... </html>"); 
tv.setText(spannable); // using html 
tv.setText("my string"); // using plain text  
tv.invalidate(); // call this to render the text 

siempre encantados de ayudarle si tiene algún problema con esto, encontrar mi correo electrónico en mi perfil

+0

¿Qué tan rápido es esto? ¿Utiliza WebView adentro? –

+0

No es nativo, es muy rápido –

+0

No quiero scrollview en esta biblioteca, en su lugar quiero elipsear texto. Alguna solución ? –

Cuestiones relacionadas