不紧急,因为我有一个解决方法,但是我真的想了解当我在下面进行更改时,我观察到的行为是否有原因。
我有一个简单的布局,在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>
我可能会遗漏一些在这里非常明显的东西,正如我所说,它在第一个结构中的作用并不重要,但它在某种意义上确实很重要我真的想知道为什么。任何想法都赞赏。
答案 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"
。即使您使用“解决方法”,也要这样做。