请参阅XML布局中的ID

时间:2013-01-24 20:09:09

标签: android xml layout

在我的XML布局中,我有两个EditText元素和几个按钮。 XML看起来像这样(删除大部分内容,只留下相关部分)

<RelativeLayout>

    <RelativeLayout android:id="@+id/entry_id">

        <Button
             android:id="@+id/btn_select"
             layout_alignParentRight="true" />

        <EditText
             android:id="@+id/txt_id"
             android:layout_toLeftOf="@id/btn_select"
             anddroid:nextFocusDown="@id/txt_extras" />

        <Button
             android:id="@+id/btn_quality"
             android:layout_below="txt_id" />
    </RelativeLayout>

    <EditText
        android:id="@+id/txt_extras"
        android:layout_below="@id/entry_id" />

</RelativeLayout>

这会产生如下布局:

+-----------------------------------------------+
|+---------------------------------------------+|
||                                             ||
||  +----------------------+  +-------------+  ||
||  | First text field     |  | Button      |  ||
||  +----------------------+  +-------------+  ||
||                                             ||
||  +----------------+                         ||
||  | Another button |                         ||
||  +----------------+                         ||
||                                             ||
|+---------------------------------------------+|
|                                               |
| +-------------------------------------------+ |
| | Second text field                         | |
| +-------------------------------------------+ |
+-----------------------------------------------+

请注意,这不是整个布局,其中有更多不同的视图,但我只关心这些。使用RelativeLayout的原因是因为它们实际上可以按照客户想要的方式布局视图。

现在,我需要在定义第二个文本之前使用第一个文本和按钮定义块,以便我可以指定第二个文本在该块下面。但是我在第一个文本字段中收到错误,因为我指的是nextFocusDown属性中的第二个文本字段,因为第二个文本字段尚未定义。这变成了捕获22.有没有办法使eclipse / lint /无论是什么理解它抱怨不在那里的字段实际上是,只是下面几行?也就是说,它是否可以从整体上看整个文件,而不是逐行查看?

或者,还有其他方法可以指定我希望焦点转到第二个文本字段而不是软键盘上按下“下一步”时第二个按钮吗?

1 个答案:

答案 0 :(得分:2)

anddroid:nextFocusDown="@id/txt_extras"

上述行应更改为:

android:nextFocusDown="@+id/txt_extras"

正如您在input events documentation中所看到的,他们使用@+id作为nextFocus*,即使ID已经定义。

如果您仍然收到错误,则可能需要将android:id="@+id/txt_extras"更改为android:id="@id/txt_extras"(删除+标志),但这不是必需的。