web-dev-qa-db-fra.com

Est-il possible de changer la taille de l'icône dans EditText

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:

 enter image description here

7
JonasSeputis

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.

6
Rohit5k2

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:

 enter image description here

13
Red Hot Chili Coder

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]
1
Saumya Mehta