¿Cómo puedo hacer cumplir una referencia circular en un RelativeLayout?
Tengo dos widgets dentro de un RelativeLayout que deben referirse entre sí. Técnicamente no es una referencia circular ya que el widget A está alineado verticalmente con el widget B y el widget B está alineado horizontalmente con el widget A. Aquí está mi código (condensado):
<Button android:id="@+id/btnLanguageFrom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_toLeftOf="@id/imgArrow" android:text="English" /> <ImageView android:id="@+id/imgArrow" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="10dp" android:layout_alignParentTop="true" android:layout_alignBottom="@id/btnLanguageFrom" android:layout_centerHorizontal="true" android:src="@drawable/arrow_right" />
Sin embargo cuando construyo consigo este error:
- RelativeLayout: alinear Ver centrado horizontal o vertical con respecto a otra vista
- ¿Cómo configurar layout_alignParentRight = "false" mediante programación?
- Alineación de componentes en RelativeLayout
- Cómo pasar de una actividad a otra Actividad en Android
- Escala la imagen de fondo para ajustar el contenido del diseño
Error: No se encontró ningún recurso que coincida con el nombre dado (en 'layout_toLeftOf' con el valor '@ id / imgArrow').
Curiosamente, la vista Diseño Gráfico en Eclipse lo muestra correctamente y no se queja de la referencia circular.
No veo el problema con dos widgets que se refieren entre sí a lo largo de diferentes dimensiones (horizontal y vertical) ya que no puede causar un bucle infinito. ¿Hay alguna forma de evitar este problema? Esta es la única manera que conozco para obtener el diseño que necesito.
Gracias de antemano, Barry PS ¿Hay alguna forma de declarar un id de antemano, como en C / C ++?
- Programar el atributo AlignParentRight al botón en RelativeLayout no funciona?
- Mostrar imagenVer superior de RelativeLayout
- ¿Qué carpetas de diseño son necesarias para admitir todos los dispositivos Android?
- ¿Por qué mi diseño relativo ocupa el ancho de pantalla completa?
- Error: (27) No se encontró ningún identificador de recurso para el atributo 'srcCompat' en el paquete 'com.example.jaisonjoseph.newsclient'
- Cómo agregar fragmentos de forma programática en relativelayout
- Alineación de vistas en tiempo de ejecución en RelativeLayout
- ¿Cómo puedo centrar dos TextViews verticalmente dentro de un Layout
La primera vez que haga referencia a una ID, utilice el prefijo @ +, que le dice al constructor de recursos que agregue la ID, en lugar de intentar encontrarla. Así que intenta:
android:layout_toLeftOf="@+id/imgArrow"
Una referencia circular es la cosa que usted desea evitar. Pero para resolver su problema basta con cambiar la definición de su Button
y ImageView
para que el ImageView
que está refiriendo en el Button
se define en primer lugar. Por alguna razón no es posible hacerlo al revés.
Además siempre usaría el mismo tipo de referencias. Así que en su caso: "@+id/imgArrow"
- Cómo escribir un filtro personalizado para ListView con ArrayAdapter
- Recogiendo un archivo de audio android