0

XML でレイアウトを作成していますが、この非常に奇妙な現象に気付きました。以前はそんなことはなかったのですが、最近は神経質になっています。そのため、Eclipse を放棄して、より優れた IDE を見つけたいと思っています。

これが私のレイアウトです:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/action_search_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="kkm" >
    </EditText>

    <ListView
        android:id="@+id/actions_list"
        android:layout_width="90dp"
        android:layout_height="match_parent"
        android:layout_above="@id/cancel_action_selection"
        android:layout_below="@id/action_search_bar" >
    </ListView>

    <TextView
        android:id="@+id/action_preview_pane"
        android:layout_width="230dp"
        android:layout_height="match_parent"
        android:layout_alignBottom="@id/actions_list"
        android:layout_alignTop="@id/actions_list"
        android:layout_toRightOf="@id/actions_list"
        android:gravity="center_vertical|center_horizontal"
        android:text="kk" />

    <Button
        android:id="@+id/cancel_action_selection"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true"
        android:text="Cancel" />

    <Button
        android:id="@+id/define_new_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/cancel_action_selection"
        android:text="NEW" />

    <Button
        android:id="@+id/select_action"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_toRightOf="@id/define_new_action"
        android:text="OK" />

</RelativeLayout>

これが私が達成しようとしているものです: 私が達成しようとしていること

問題は、(android:layout_above を介して) ListView をキャンセル ボタンの上に設定しようとすると、キャンセル ボタンの ID が見つからないというメッセージが表示されることです。

ここで気付いたのは、レイアウトが @+id で作成される前にレイアウトの ID を指定しようとすると、その奇妙なエラーが発生することです。これが意味することは次のとおりです。

XML では、明らかに ID を順番に宣言する必要があります。変ですよね?ListView を定義してその layout_above 属性を設定する前に、キャンセル ボタンの ID を @+id で最初に宣言する必要があります。

ここで行ったことを実行しようとすると、キャンセル ボタンの ID が見つからないと表示されます。

プロジェクトのクリーニング、adb.exe の終了、更新などを試みましたが、プロジェクトがさらに破損するだけです。R はその後も生成されません。Eclipse はこのようなことを適切に処理できないため、問題が次々とループする必要はありません。

誰かがこれに対する解決策を持っていますか? それともより良いIDEですか?

4

1 に答える 1

0

http://developer.android.com/guide/topics/ui/layout/relative.html

RelativeLayout を使用すると、子ビューは、親ビューまたは相互 (ID で指定) に対して相対的な位置を指定できます。したがって、2 つの要素を右の境界線で揃えたり、別の要素の下に配置したり、画面の中央に配置したり、左の中央に配置したりすることができます。

したがって、ボタンのキャンセルに対してリストビューを配置しています。したがって、id を使用してボタンを定義する必要があります。ボタンを基準にしてリストビューを配置します。

http://developer.android.com/guide/topics/ui/layout/linear.html

線形レイアウトと相対レイアウトの両方について投稿されたリンクに例があり、それを見てください。

編集:

リソース ファイルにエラーがある場合、R.java は生成されません。そのため、リソース ファイルにエラーがないことを確認してから、プロジェクトをクリーンアップしてビルドしてください。

混乱を明確にする。ノートandroid:layout_above="@+id/button1"

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".OtherScreenActivity1" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="24dp"
            android:text="Button" />

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/button1"
             >
        </ListView>

</RelativeLayout>

同上

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".OtherScreenActivity1" >

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_above="@+id/button1"
            android:layout_alignParentTop="true" >

        </ListView>
        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true"
            android:layout_marginBottom="24dp"
            android:text="Button" />

</RelativeLayout>

あなたはこれを持っています

  android:layout_above="@id/cancel_action_selection"

使用する

  android:layout_above="@+id/cancel_action_selection"

http://developer.android.com/guide/topics/ui/declaring-layout.html

上記のリンクの属性 ID を見てください。

于 2013-09-10T03:21:41.223 に答える