2

私の XML レイアウトには、特に 2 つの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は、クライアントが望む方法でビューを実際にレイアウトできるようにするためです。

次に、2 番目のテキストを定義する前に、最初のテキストとボタンを含むブロックを定義して、2 番目のテキストがそのブロックの下にあるように指定できるようにする必要があります。ただし、nextFocusDown2 番目のテキスト フィールドがまだ定義されていないため、属性の 2 番目のテキスト フィールドを参照しているため、最初のテキスト フィールドでエラーが発生します。これはcatch 22になります.eclipse/lint/whateverに、存在しないことを訴えているフィールド実際には数行下にあることを理解させる方法はありますか? つまり、行ごとではなく、全体としてファイルを全体的に見るようにすることは可能ですか?

または、ソフト キーボードで「次へ」を押したときに、フォーカスを 2 番目のボタンではなく 2 番目のテキスト フィールドに移動するように指定する他の方法はありますか?

4

1 に答える 1

2
anddroid:nextFocusDown="@id/txt_extras"

上記の行を次のように変更する必要があります。

android:nextFocusDown="@+id/txt_extras"

入力イベントのドキュメントでわかるように、ID が既に定義されている場合でも、@+idforを使用します。nextFocus*

それでもエラーが発生する場合は、(記号を削除する) に変更android:id="@+id/txt_extras"する必要があるかもしれませんが、これは必要ありません。android:id="@id/txt_extras"+

于 2013-01-24T20:28:59.257 に答える