我正在尝试配置三个片段:一个片段的左侧为固定宽度,一个片段的右侧为固定宽度,中间的一个将占用所有剩余空间。我搜索了一个解决方案,并遵循了我在网上找到的建议,但是,当我尝试运行该应用程序时,出现了一个错误:

找不到与给定名称匹配的资源(位于“ layout_toRightOf”,值为“ @ id / right_item_menu_fragment”)。

如果我在布局id ='right_item_menu_fragment'之后移动RelativeLayout id ='canvas_fragment',则安装成功(没有上述错误),但是“ canvas_fragment”在屏幕上不可见。

我搜索了此错误,有多种可能的原因导致此错误发生,但是没有一个适用于我的情况。使用Eclipse时,很多人都会遇到此错误,但是我使用的是Android Studio。

如果有人能指出我做错了什么,将不胜感激。

这是我的布局:

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/canvas_layout"

android:layout_width="match_parent"

android:layout_height="match_parent">
    


<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/left_item_menu_fragment"

     android:layout_width="@dimen/item_menu_width"

     android:layout_height="match_parent"

     android:layout_alignParentLeft = "true"

    android:background="#cccccc">
    


 </RelativeLayout>
    


 <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"

        android:id="@+id/canvas_fragment"

        android:orientation="vertical"

        android:layout_height="match_parent"

        android:layout_width="match_parent"

            android:layout_toLeftOf = "@+id/left_item_menu_fragment"

        android:layout_toRightOf = "@id/right_item_menu_fragment"

        android:background="#000000" >
    


</RelativeLayout>
    
    


<RelativeLayout
       xmlns:android="http://schemas.android.com/apk/res/android"

       android:id="@+id/right_item_menu_fragment"

       android:layout_width="@dimen/item_menu_width"

        android:layout_height="match_parent"

         android:layout_alignParentRight = "true"

        android:background="#cccccc">
    


</RelativeLayout>

    
    
    
    
    </RelativeLayout>


最佳答案

我以前曾经遇到过这个问题,这似乎是一个前向参考问题。尝试如下重新排列相对布局,以便最后定义中间部分。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/canvas_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

<RelativeLayout
    android:id="@+id/left_item_menu_fragment"
    android:layout_width="@dimen/item_menu_width"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:background="#cccccc">
</RelativeLayout>

<RelativeLayout
    android:id="@+id/right_item_menu_fragment"
    android:layout_width="@dimen/item_menu_width"
    android:layout_height="match_parent"
    android:layout_alignParentRight="true"
    android:background="#cccccc">

</RelativeLayout>

<RelativeLayout
    android:id="@+id/canvas_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    <!-- layout_toLeftOf and layout_toRightOf were backwards. This is correct.-->
    android:layout_toLeftOf="@id/right_item_menu_fragment"
    android:layout_toRightOf="@id/left_item_menu_fragment"
    android:background="#000000"
    android:orientation="vertical">
</RelativeLayout>




迈克·M(Mike M)所说的也是正确的。有关详细信息,请参见this link

08-18 18:35