Android:layout_toLeftOf ~ 没有找到资源

Android:layout_toLeftOf ~ No resource found

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/pickerDialog_title"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:gravity="left|center_horizontal"
        android:text="HELLO WORLD!!" />
    <NumberPicker
        android:id="@+id/pickerDialog_selector"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/pickerDialog_title" />
    <Button
        android:id="@+id/pickerDialog_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/pickerDialog_selector"
        android:layout_toLeftOf="@id/pickerDialog_set" //Cannot find @id/pickerDialog_set
        android:gravity="center"
        android:text="Cancel" />
    <Button
        android:id="@+id/pickerDialog_set" //Here it is
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/pickerDialog_selector"
        android:layout_toRightOf="@id/pickerDialog_cancel"
        android:gravity="center"
        android:text="Set" />
</merge> 

No resource found that matches the given name (at layout_toLeftOf with value @id/pickerDialog_set

我的理解是,android:id 应该作为前缀 @+id/,并参考了要作为前缀的视图 @id/

如何正确引用 ID?

您应该更改按钮的顺序,即 toLeftOf 这个按钮,因为您不能在创建之前使用 id。您的代码应如下所示:

<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:id="@+id/pickerDialog_title"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:gravity="left|center_horizontal"
        android:text="HELLO WORLD!!" />
    <NumberPicker
        android:id="@+id/pickerDialog_selector"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/pickerDialog_title" />
    <Button
        android:id="@+id/pickerDialog_set" //Here it is
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/pickerDialog_selector"
        android:gravity="center"
        android:text="Set" />
    <Button
        android:id="@+id/pickerDialog_cancel"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/pickerDialog_selector"
        android:layout_toLeftOf="@id/pickerDialog_set" 
        android:gravity="center"
        android:text="Cancel" />
 </merge> 

并删除 pickerDialog_set 按钮的 android:layout_toRightOf,就像我在上面的代码中所做的那样

试试这个 android:layout_toLeftOf="@+id/pickerDialog_set"

第一次在布局中添加id时必须添加“+”号(从上到下)。 所以这应该可以解决问题:

android:layout_toLeftOf="@+id/pickerDialog_set"