1

これら 2 つのビューは の内部にありRelativeLayoutます。IDE はエラーをスローし、何もありません@id/et_passが、設定すれば問題ありません@+id/et_pass。何故ですか?

<ImageView 
    android:id="@+id/devider_zero"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@id/et_pass" <!-- Error is here -->
    android:src="@drawable/registration_line" />

<EditText
    android:id="@+id/et_pass"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/devider_first"
    android:background="@android:color/transparent"
    android:layout_gravity="left"
    android:ellipsize="start"
    android:ems="8"
    android:hint="@string/password"
    android:inputType="textPassword"
    android:layout_marginTop="@dimen/register_layout_edittext_margin_top"
    android:maxLines="1" />
4

2 に答える 2

0

@+id/somethingとの違い@id/somethingは、1 つ目は ID を作成し、2 つ目は作成済みの ID を参照していることです。id を初めて言及するときは、 を使用して作成する必要があり@+id/、その後は を使用できます@id/

ビューに属性を与えるとき、ファイルのどこかですでにそれを使用している場合はandroid:id使用する必要はありません。@+id/

android が XML ファイルをコンパイルする方法のため、最初にイメージ ビューを読み取り@id/、R ファイル内の id の検索を記述するポイントに到達し、それを見つけることができません。しかし、R ファイルで id を検索する Eclipse を呼び出すと@+id/、それが見つからず、追加されます。

また、これは RelativeLayouts に固有のものではありません。同じコードを線形レイアウトに配置すると、そのエラーも発生します。

于 2013-04-02T09:20:41.943 に答える
0

@+idID が存在しない場合は ID を作成するようにパーサーに指示します。@id既存の ID を参照するために使用されます。

于 2013-04-02T09:20:57.990 に答える