Vistas personalizadas de Android en Eclipse Visual Editor

En mis aplicaciones, a menudo me baso en vistas de compilación personalizadas, como en el ejemplo siguiente.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:background="@color/light_grey" android:layout_height="match_parent" android:layout_width="fill_parent" > <TextView style="@style/CardTitle" android:id="@+id/card_title" android:layout_height="wrap_content" android:layout_width="fill_parent" /> <com.whiterabbit.cards.ui.AspectRatioImageView android:id="@+id/card_picture" android:layout_width="fill_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" android:layout_marginLeft="30dip" android:layout_marginRight="30dip" android:src="@drawable/boss" /> <ListView android:id="@+id/card_properties" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 

El problema es, no sé cómo si se mostrará correctamente hasta que lo ejecute en un dispositivo real o en el emulador. Por otra parte, si he encontrado algo mal que tendría que realizar cambios en él y desplegar la aplicación de nuevo para ver si los cambios funcionaron como esperaba.

Esto puede ser un proceso largo y aburrido, especialmente si la aplicación requiere alguna interacción para llegar a la actividad que desea comprobar.

El uso del editor visual no funciona, ya que no puede cargar la vista personalizada.

¿Hay otra manera de comprobar cómo se muestran las vistas sin ejecutar a través de toda la aplicación?

Puede hacerlo en su vista personalizada:

 if(!isInEditMode()){ // Your custom code that is not letting the Visual Editor draw properly // ie thread spawning or other things in the constructor } 

http://developer.android.com/reference/android/view/View.html#isInEditMode ()

Esto le permite ocultar código de ADT Plugin XML Viewer y esperamos mostrarle un diseño!

View.isInEditMode ()

Indica si esta Vista está actualmente en modo de edición. Normalmente, una vista se encuentra en modo de edición cuando se muestra en una herramienta de desarrollo. Por ejemplo, si esta vista está siendo dibujada por un constructor de interfaz de usuario visual, este método debe devolver true. Las subclases deben comprobar el valor de retorno de este método para proporcionar comportamientos diferentes si su comportamiento normal podría interferir con el entorno del host. Por ejemplo: la clase genera un subproceso en su constructor, el código de dibujo se basa en características específicas del dispositivo, etc. Este método se suele marcar en el código de dibujo de widgets personalizados.

Puede crear una actividad de esqueleto que cargue sólo la vista que desee ver y rellenarla con datos suficientes para que se muestre.

Estoy usando Android Studio, así que no estoy seguro de que esta respuesta se aplique a su caso.

Creo que podría anular el método onDraw en la vista personalizada, como este ejemplo mantener la relación de aspecto de una imagen interna:

 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // TODO: consider storing these as member variables to reduce // allocations per draw cycle. int paddingLeft = getPaddingLeft(); int paddingTop = getPaddingTop(); int paddingRight = getPaddingRight(); int paddingBottom = getPaddingBottom(); int w = getWidth() - paddingLeft - paddingRight; int h = getHeight() - paddingTop - paddingBottom; w = w<h ? w : h; h = w; // Draw the example drawable on top of the text. if (dieDrawable != null) { dieDrawable.setBounds(paddingLeft, paddingTop, paddingLeft + w, paddingTop + h); dieDrawable.draw(canvas); } } 

Este método se ejecuta tanto en el emulador como en el diseñador.

Funciona también para cualquier evento que vuelva a dibujar la vista (onSizeChanged, onLayout, etc …)

  • Error de instalación de principiante de ActionBarSherlock
  • ¿Cómo tratar la carpeta de origen src / test / java que falta en el proyecto Android / Maven?
  • ¿Puede Eclipse generar automáticamente diferentes imágenes DPI para proyectos de Android?
  • No se puede detectar Sony Xperia en Eclipse
  • cómo mostrar letras árabes correctamente en android usando phonegap?
  • Cambiar la ubicación del indicador en ExpandableListView causando problemas
  • Gradle pone archivos duplicados en el archivo apk
  • Emita la creación de AVD en el símbolo del sistema en Windows XP
  • Error: java.lang.UnsupportedOperationException: No se puede convertir a dimensión: type = 0x3
  • ¿Cómo cambiar el tamaño de la fuente y el color de la fuente de un archivo Java?
  • GestureDetector no puede ser resuelto a un tipo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.