RelativeLayout pas de la manipulation “toLeftOf” et/ou toRightOf correctement
J'ai été à la recherche d'une solution pour le problème avec "toLeftOf" et "toRightOf" lors de l'utilisation de RelativeLayout, mais nai pas trouvé une vraie solution ou la bonne réponse à ce comportement:
Fondamentalement, "toLeftOf" ne fonctionne pas bien.
J'ai deux EditText, et je veux une image à afficher à gauche de chaque EditText. Quand j'essaie de le faire, j'obtiens le résultat suivant (Éclipse de l'éditeur):
Comme vous pouvez le voir, les images ne sont pas visibles. Voici le code XML utilisé:
<?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>
Tout d'abord, pourquoi ce n'est pas de travail?
Si je change le XML, et l'utilisation "toRightOf" sur le EditTexts au lieu de "toLeftOf" sur les images, puis-je obtenir le suivi des résultats:
Comme vous pouvez le voir, les deux images sont affichées, mais ils sont "au-dessus des autres", lorsque le cadenas doit être sur le côté gauche de la deuxième EditText. Voici le 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>
Deuxième question, pourquoi le "cadenas" en image sur la première image, et non pas directement à la gauche de la seconde EditText?
Si j'ajoute la ligne suivante à la dernière ImageView (le cadenas):
android:layout_below="@+id/login_car_icon"
il est placé correctement, mais je pense que c'est un "hack" et ne devrait pas être nécessaire, à droite?
La dernière ImageView a la suite de XML de travail:
<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"
/>
Résultat:
Enfin, pourquoi est-ce nécessaire pour faire de l'image, à gauche de la dernière EditText?
Merci =)
RelativeLayout
des positions de son contenu à (0, 0) par défaut. Quand vous dites à disposition de quelque chose android:layout_rightOf
cela va affecter l'enfant de la composante en x de coordonnées. Avec android:layout_below
vous êtes à la modification de la coordonnée trop.Merci pour cela. Il convient de préciser claire, que "toLeftOf" n'affecte pas y, parce que je pense que la plupart des ppl pourrait s'attendre à ce qu'il affecte aussi...
OriginalL'auteur Ted | 2013-01-13
Vous devez vous connecter pour publier un commentaire.
La
RelativeLayout
de faire quelque chose comme ceci:EditText
qui est défini pour remplir la largeur de la société mère(et sera positionné en commençant par le coin en haut à gauche(défaut de positionnement dans unRelativeLayout
)), il remplit toute la largeur de l'écranImageView
, positionné à gauche de laEditText
, mais comme leEditText
est placé pour démarrer à partir du bord gauche de l'écran et il remplit l'écran entier, l'ImageView sera placé à la gauche de laEditText
à l'extérieur de la visibilité de la zone de l'écranUne façon de positionner les points de vue comme vous voulez serait:
La
RelativeLayout
place de ses enfants(sans règles) en partant du point en haut à gauche de l'écran. Si vous n'avez pas de règles, vous vous retrouvez avec jalonné les enfants.Qui n'est pas un hack. Vous devez dire à la
RelativeLayout
que la deuxièmeImageView
position de l'est en dessous de la premièreImageView
.OriginalL'auteur Luksprog
Essayer ce code Ce spectacle mise en page, comme montré dans l'image.
C'est le travail pour vous.
OriginalL'auteur Dixit Patel
La logique serait de charger les images tout d'abord, et puis de charger le texte à modifier les widgets de la droite.
OriginalL'auteur Philip Sheard