Vista compuesta que no se procesa en Eclipse en modo de edición
Estoy tratando de construir un widget que se compone de unos pocos controles agrupados. Aquí está el widget:
public class VarioView extends RelativeLayout { private int value; private ImageView m_circle; private TextView m_varioText; private TextView m_units; public VarioView(Context context) { this(context,null); } public VarioView(Context context, AttributeSet attr) { this(context,attr, 0); } public VarioView(Context context, AttributeSet attr, int defStyle) { super(context, attr, defStyle); //View.inflate(context, R.layout.vario, this); LayoutInflater li = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); li.inflate(R.layout.vario, this, true); m_circle = (ImageView)this.findViewById(R.id.VarioCircle); m_varioText = (TextView)this.findViewById(R.id.VarioText); //m_circle.setColorFilter(Color.BLUE); } public int getValue() { return value; } public void setValue(int value) { m_varioText.setText(Integer.valueOf(value).toString()); this.value = value; } }
Aquí está el widget xml
- Este SDK de Android requiere Android Developer Toolkit versión 22.0.0 o superior. La versión actual es 21.1.0.v201302060044-569685.
- Cómo utilizar Legacy Apache en Eclipse para apoyar Android M
- Error de xml de Android: "Ningún recurso encontrado que coincida con el nombre dado" con RelativeLayout (@ id / LinearLayout_acc, @ id / ProgressBar_statusScreen)
- ¿Cómo puedo instalar un apk en varios dispositivos conectados?
- Android SDK Java: no encontrado
<merge xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:id="@+id/VarioCircle" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerInParent="true" android:contentDescription="Vario Circle" android:src="@drawable/circle3" /> <TextView android:id="@+id/VarioText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="200" android:textColor="#FF0000" android:textSize="60sp" android:textStyle="bold" android:typeface="monospace" /> <TextView android:id="@+id/VarioUnits" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/VarioText" android:layout_centerHorizontal="true" android:layout_marginTop="100dp" android:text="fpm" android:textSize="20sp" /> </RelativeLayout> </merge>
Aquí está la forma del círculo:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" android:useLevel="false" android:color="#FF0000" > <size android:height="200dip" android:width="200dip" /> <stroke android:width="10dp" android:color="#FF0000" /> </shape>
Y en mi opinión principal sólo lo estoy usando así:
<com.proflite.VarioView android:layout_width="match_parent" android:layout_height="match_parent" />
Mi problema es que funciona bien cuando lo ejecuto en el emulador (o dispositivo real), pero cuando intento ir al editor gráfico en Eclipse dibuja un cuadro gris sobre el control y me da esto:
The following classes could not be instantiated: - com.proflite.VarioView (Open Class, Show Error Log) See the Error Log (Window > Show View) for more details. Tip: Use View.isInEditMode() in your custom views to skip code when shown in Eclipse android.content.res.Resources$NotFoundException: Could not resolve resource value: 0x7F030001. at android.content.res.BridgeResources.throwException(BridgeResources.java:693) at android.content.res.BridgeResources.getLayout(BridgeResources.java:271) at android.view.LayoutInflater.inflate(LayoutInflater.java:394) at com.proflite.VarioView.<init>(VarioView.java:30) at com.proflite.VarioView.<init>(VarioView.java:23) at sun.reflect.NativeConstructorAccessorImpl.newInstance0( at sun.reflect.NativeConstructorAccessorImpl.newInstance( at sun.reflect.DelegatingConstructorAccessorImpl.newInstance( at java.lang.reflect.Constructor.newInstance( at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.instantiateClass(ProjectCallback.java:413) at com.android.ide.eclipse.adt.internal.editors.layout.ProjectCallback.loadView(ProjectCallback.java:170) at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:207) at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:135) at android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:746) at android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:64) at android.view.LayoutInflater.rInflate(LayoutInflater.java:718) at android.view.LayoutInflater.inflate(LayoutInflater.java:489) at android.view.LayoutInflater.inflate(LayoutInflater.java:372)
Información adicional, comprobar 0x7F030001
se asigna a R.layout.vario
y el error está saliendo de esta línea: li.inflate(R.layout.vario, this, true);
. Además, si lo cambio a li.inflate(R.layout.vario, this);
No da el error, pero el control sólo muestra "en blanco", no se procesa en modo de edición (todavía funciona cuando se ejecuta realmente).
Realmente me gustaría ser capaz de visualizar el diseño en el editor porque toma mucho tiempo para hacer alteraciones de diseño menor y volver a ejecutar en el emulador.
Gracias
** Nota ** el error proviene de la disposición donde se coloca el control. Realmente se procesa correctamente si hago edición gráfica en el propio control.
- ¿Hay alguna forma de imprimir el rastreo de la pila bajo demanda?
- Android: adb shell, no se encontró ningún comando adb
- Error al cargar el archivo de propiedades del proyecto android
- Error de dependencia de android-support-v4.jar
- La ejecución del complemento no está cubierta por el error de configuración del ciclo de vida
- Los paquetes de desgaste de Android no funcionan
- Habilitar Soporte MultiDex en Android para lograr métodos de 65K + en Eclipse
- Depuración de Android en MotoG
Bueno, me siento muy estúpido. Todo funcionó después de reiniciar Eclipse.
- El estado de Facebook no se actualizó. Error 403, error de autenticación, SocialAuthException en Android
- ¿Cómo se pasa por la id de la vista?