it-swarm.com.ru

Можно ли изменить размер значка внутри EditText

Я создаю окно входа в систему с полями имени пользователя и пароля, и в каждое из них я хочу добавить значки. Когда я добавляю значок в поле EditText, я не могу изменить размер значка.

Значок находится внутри поля EditText, потому что я хочу изменить фон EditText, когда он находится в фокусе.

Я попытался поместить значок и представление EditText в LinearLayout, но я не мог изменить фон макета, когда EditText сфокусирован.

Мой код 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 visual:

 enter image description here

7
JonasSeputis

Вы можете изменить значок и использовать меньший в фокусе. Это метод, который вы должны использовать.

public void setCompoundDrawablesWithIntrinsicBounds (
                                       int left, int top, int right, int bottom)

Устанавливает Drawables (если таковые имеются), чтобы отображаться слева, над, справа и под текстом. Используйте 0, если вы не хотите рисовать там. Границы Drawables будут установлены на их внутренние границы.

Теперь, чтобы добавить отступы, вы можете использовать это

 public void setCompoundDrawablePadding (int pad)

Устанавливает размер отступа между составными объектами рисования и текстом.

Связанные атрибуты XML:

Android:drawablePadding

Больше информации здесь и здесь . Есть много других методов, которые могут вас заинтересовать.

6
Rohit5k2

Если вы хотите решить проблему в xml, вот пример кода, где вы можете манипулировать размером изображения/отступами:

<!-- 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>

А вот как это выглядит:

 enter image description here

13
Red Hot Chili Coder

Лучшим способом, чем настройка Java, было бы установить его внутри многоуровневого рисования следующим образом.

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