Je crée une fenêtre de connexion avec des champs de nom d'utilisateur et de mot de passe et je souhaite y placer des icônes. Lorsque j'ajoute une icône au champ EditText, je ne peux pas modifier la taille de l'icône.
L'icône est à l'intérieur du champ EditText parce que je veux changer l'arrière-plan EditText quand il est activé.
J'ai essayé de placer l'icône et la vue EditText dans LinearLayout, mais je ne pouvais pas modifier l'arrière-plan de la mise en page lorsque EditText est activé.
Mon code EditText:
<EditText
Android:id="@+id/user_name_edit_text"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_marginLeft="35dp"
Android:layout_marginRight="35dp"
Android:layout_marginTop="35dp"
Android:background="@drawable/custom_border_selector"
Android:drawablePadding="5dp"
Android:hint="@string/username"
Android:singleLine="true"
Android:textColor="#757575"
Android:textSize="15sp"
Android:drawableLeft="@drawable/ic_person_grey_24dp"
/>
EditText visuel:
Vous pouvez changer l'icône et utiliser une plus petite mise au point. C'est la méthode que vous devriez utiliser.
public void setCompoundDrawablesWithIntrinsicBounds (
int left, int top, int right, int bottom)
Définit les éléments dessinables (le cas échéant) pour qu'ils apparaissent à gauche, en haut, à droite et en dessous du texte. Utilisez 0 si vous ne voulez pas de Drawable ici. Les limites des Drawables seront définies sur leurs limites intrinsèques.
Maintenant, pour ajouter du rembourrage, vous pouvez utiliser ceci
public void setCompoundDrawablePadding (int pad)
Définit la taille du remplissage entre les éléments composables et le texte.
Attributs XML associés:
Android:drawablePadding
Plus d'informations ici et ici . Il existe de nombreuses autres méthodes qui pourraient vous intéresser.
Si vous souhaitez résoudre le problème en XML, voici un exemple de code dans lequel vous pouvez manipuler la taille/le remplissage de votre image:
<!-- USERNAME INPUT -->
<RelativeLayout
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:background="@drawable/edit_text_selector">
<!-- INPUT -->
<EditText
Android:id="@+id/username_input"
Android:layout_marginLeft="-10dp"
Android:layout_toRightOf="@+id/username_icon"
Android:text=""
Android:hint="Username"
Android:padding="10dp"
Android:background=""
Android:layout_width="match_parent"
Android:layout_height="wrap_content"/>
<!-- ICON -->
<ImageView
Android:padding="3dp"
Android:id="@+id/username_icon"
Android:src="@drawable/perm_group_personal_info"
Android:layout_width="40dp"
Android:layout_height="40dp" />
</RelativeLayout>
Et voici à quoi ça ressemble:
Un meilleur moyen que de définir par Java serait de le placer dans un calque dessiné comme suit.
Layered list drawable is as under :
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item
>
<shape>
<solid Android:color="@color/bg_row_drop_completed"/>
<size Android:width="96dp"
/>
<padding Android:top="-15dp"
Android:bottom="-15dp"/>
<corners Android:topLeftRadius="@dimen/btn_add_bg_radius_purple" Android:topRightRadius="@dimen/btn_add_bg_radius_purple"/>
</shape>
</item>
<item
>
<bitmap Android:src="@drawable/_ic_arrow_drop_up_normal" Android:gravity="center_vertical"
></bitmap>
</item>
</layer-list>[enter image description here][1]