如何在RelativeLayout中强制执行循环引用?

Bar*_*man 13 android android-relativelayout

我在RelativeLayout中有两个必须互相引用的小部件.从技术上讲,它不是循环引用,因为小部件A与小部件B垂直对齐,小部件B与小部件A水平对齐.这是我的代码(浓缩):

    <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" />
Run Code Online (Sandbox Code Playgroud)

但是当我构建时,我收到此错误:

错误:找不到与给定名称匹配的资源(在'layout_toLeftOf'中,值为'@id/imgArrow').

有趣的是,Eclipse中的Graphical Layout视图正确显示它并且不会抱怨循环引用.

我没有看到两个小部件沿不同维度(水平和垂直)相互引用的问题,因为它不会导致无限循环.有没有解决这个问题的方法?这是我知道获得我需要的布局的唯一方法.

在此先感谢,Barry PS有没有办法提前声明一个id,就像在C/C++中一样?

Jas*_*run 27

第一次引用ID时,请使用@ +前缀,它告诉资源构建器添加ID,而不是尝试查找它.所以尝试:

android:layout_toLeftOf="@+id/imgArrow"
Run Code Online (Sandbox Code Playgroud)

  • 这很有效,谢谢!我从未想过我可以在引用它时声明一个id.Muchas gracias. (4认同)