是否可以在EditText中更改图标的大小

时间:2016-02-26 11:18:23

标签: android android-layout android-studio

我正在创建一个包含用户名和密码字段的登录窗口,每个我都想放置图标。当我向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

3 个答案:

答案 0 :(得分:13)

如果您想解决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

答案 1 :(得分:6)

  

您可以更改图标并在焦点上使用较小的图标。这是你应该使用的方法。

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

将Drawables(如果有)设置为显示在文本的左侧,上方,右侧和下方。如果你不想在那里使用Drawable,请使用0。 Drawables&#39;边界将设置为其内在边界。

  

现在要添加填充,您可以使用此

 public void setCompoundDrawablePadding (int pad)

设置复合drawable和文本之间填充的大小。

相关的XML属性:

android:drawablePadding

更多信息herehere。您可能会发现许多其他有趣的方法。

答案 2 :(得分:1)

比java设置更好的方法是将It设置在分层drawable中,如下所示。

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]