2

在我的 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                         | |
| +-------------------------------------------+ |
+-----------------------------------------------+

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

现在,我需要在定义第二个文本之前使用第一个文本和按钮定义块,以便我可以指定第二个文本位于该块下方。但是,我在第一个文本字段中出现错误,因为我指的是nextFocusDown属性中的第二个文本字段,因为第二个文本字段尚未定义。这变成了第 22 条问题。有什么方法可以让 eclipse/lint/whatever 明白它所抱怨的字段实际上不存在,在下面几行?也就是说,是否有可能让它从整体上、作为一个整体而不是逐行查看文件?

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

4

1 回答 1

2
anddroid:nextFocusDown="@id/txt_extras"

上述行应更改为:

android:nextFocusDown="@+id/txt_extras"

正如您在输入事件文档中看到的那样,它们使用@+idfor nextFocus*,即使 ID 已经定义。

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

于 2013-01-24T20:28:59.257 回答