¿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:

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 ++?

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"

  • Establecer fondo de RelativeLayout con la imagen descargada con Universal Image Loader
  • Disposiciones anidadas de Android
  • TextViews en la parte superior e inferior, el espacio restante lleno de ListView
  • Android: extiende Linearlayout, pero necesita lo mismo para RelativeLayout. Código duplicado inevitable?
  • No lleve el botón al primer plano al hacer clic
  • Cómo encontrar lo que está causando dependencias circulares en RelativeLayout
  • Cómo poner una vista sobre otros en el diseño relativo de forma programática en android?
  • ImageView no se extiende (Android)?
  • ¿Qué hace el diseño relativo wrap_content?
  • ¿Por qué se ignora layout_marginBottom cuando se usa wrap_content?
  • Android pone Cardview en la parte superior de Cardview padre en RelativeLayout
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.