当XML文件中的顺序不同时,Android按钮不会触发

时间:2015-07-17 09:29:42

标签: android android-xml

不紧急,因为我有一个解决方法,但是我真的想了解当我在下面进行更改时,我观察到的行为是否有原因。

我有一个简单的布局,在XML文件中包含EditText和Button。

它显示正常,并且下面的代码工作正常(触发onClick)

<RelativeLayout android:id="@+id/group"
    android:layout_width="wrap_content" android:layout_height="wrap_content">

    <EditText android:id="@+id/Topic" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_toLeftOf="@+id/AddTopic"
        android:layout_alignParentLeft="true" android:ems="10" />

    <Button android:id="@+id/AddTopic"
        android:layout_alignParentRight="true" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_weight="1"
        android:onClick="onClick" android:textSize="10dp" android:text="Add Topic" />

</RelativeLayout>

但是,如果我翻转周围的对象,如下所示,按钮不会触发 - onClick不会运行且没有任何反应。

<RelativeLayout android:id="@+id/group"
    android:layout_width="wrap_content" android:layout_height="wrap_content">

    <Button android:id="@+id/AddTopic"
        android:layout_alignParentRight="true" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_weight="1"
        android:onClick="onClick" android:textSize="10dp" android:text="Add Topic" />

    <EditText android:id="@+id/Topic" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_toLeftOf="@+id/AddTopic"
        android:layout_alignParentLeft="true" android:ems="10" />

</RelativeLayout>

我可能会遗漏一些在这里非常明显的东西,正如我所说,它在第一个结构中的作用并不重要,但它在某种意义上确实很重要我真的想知道为什么。任何想法都赞赏。

1 个答案:

答案 0 :(得分:0)

结合评论中发布的信息,可能的原因是您在引用其他对象时错误地使用@+id/,而不是@id/。具体而言EditText包含android:layout_toLeftOf="@+id/AddTopic"。只有在引入新的+时才会使用id符号。

在第一个示例中,它对听众没有害处,因为按钮是在EditText@+id/工作之后声明的,但在第二个示例中是id的声明EditText

时,可能会覆盖按钮

TL; DR:在EditText中将android:layout_toLeftOf="@+id/AddTopic"替换为android:layout_toLeftOf="@id/AddTopic"。即使您使用“解决方法”,也要这样做。