私はRelativeLayoutを使用するときの「toLeftOf」と「toRightOf」の問題の解決策を探していましたが、この動作に対する実際の解決策または適切な答えが見つかりませんでした。
基本的に、「toLeftOf」はあまりうまく機能していません。
EditTextが2つあり、各EditTextの左側に画像を表示したいと思います。これを実行しようとすると、次の結果が得られます(Eclipseエディター)。
ご覧のとおり、画像はまったく表示されていません。使用されるXMLは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="35dp"
android:background="#010101"
android:gravity="center_horizontal"
android:orientation="vertical" >
<EditText
android:id="@+id/login_carNumber"
style="@style/EditTextDark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/prompt_carNumber"
android:inputType="phone"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textCursorDrawable="@null" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/login_car_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/user"
android:layout_toLeftOf="@id/login_carNumber" />
<EditText
android:id="@+id/login_password"
style="@style/EditTextDark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/login_carNumber"
android:layout_marginTop="10dp"
android:hint="@string/prompt_password"
android:inputType="phone"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textCursorDrawable="@null" >
</EditText>
<ImageView
android:id="@+id/login_lock_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/lock"
android:layout_toLeftOf="@id/login_password" />
</RelativeLayout>
まず、なぜこれが機能しないのですか?
XMLを変更し、画像で「toLeftOf」の代わりにEditTextsで「toRightOf」を使用すると、次の結果が得られます。
ご覧のとおり、両方の画像が表示されていますが、南京錠が2番目のEditTextの左側にあるはずの場合、これらは「互いに重なり合っています」。XMLは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp"
android:layout_marginRight="30dp"
android:layout_marginTop="35dp"
android:background="#010101"
android:gravity="center_horizontal"
android:orientation="vertical" >
<EditText
android:id="@+id/login_carNumber"
style="@style/EditTextDark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_toRightOf="@+id/login_car_icon"
android:hint="@string/prompt_carNumber"
android:inputType="phone"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textCursorDrawable="@null" >
<requestFocus />
</EditText>
<ImageView
android:id="@+id/login_car_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/user" />
<EditText
android:id="@+id/login_password"
style="@style/EditTextDark"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/login_carNumber"
android:layout_marginTop="10dp"
android:layout_toRightOf="@+id/login_lock_icon"
android:hint="@string/prompt_password"
android:inputType="phone"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textCursorDrawable="@null" >
</EditText>
<ImageView
android:id="@+id/login_lock_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/lock"
/>
</RelativeLayout>
2番目の質問; 2番目のEditTextのすぐ左ではなく、最初の画像の上に「南京錠」の画像があるのはなぜですか。
最後のImageView(南京錠の画像)に次の行を追加すると、次のようになります。
android:layout_below="@+id/login_car_icon"
正しく配置されていますが、「ハック」である必要はないと思いますよね?
したがって、最後のImageViewには次のXMLが機能します。
<ImageView
android:id="@+id/login_lock_icon"
android:layout_width="40dp"
android:layout_height="40dp"
android:src="@drawable/lock"
android:layout_below="@+id/login_car_icon"
/>
結果:
最後に、最後のEditTextの左側に画像を作成するためにこれが必要なのはなぜですか?