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.
- ¿Cómo tener depuración y liberación de apk en el mismo dispositivo?
- La aplicación de Android no se inicia en simulador o hardware
- Android Dev in Eclipse: Mensaje de error extraño
- No se puede usar F5 para entrar en la función mientras se depura en Eclipse
- ¿Cómo conectar el dispositivo a Eclipse?
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?
- Nueva aplicación de actividad en blanco no funciona
- Implementación de admob para diferentes actividades
- Mostrar identificación de hilo de Android en LogCat
- Eclipse Juno - Error de Aserción (Se produjeron problemas al invocar código del complemento: "org.eclipse.jface".)
- Dispositivo de dispositivos Android: el dispositivo no aparece
- Controlador USB Nexus 5
- Eclipse ADT: nombre del proyecto "appcompat_v7" que se crea después de crear cada nuevo proyecto
- Cómo limpiar un proyecto de Android?
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 …)
- SpeechRecognizer en Android Wear
- NullPointerException en los servicios de Google Play al llamar a play () en RemotePlaybackClient