自定义EditText到Android

时间:2018-08-16 05:35:59

标签: android android-layout

我想将附加文件图标放入EditText,例如将其如何制作为WhatsApp。我该怎么办?

enter image description here

6 个答案:

答案 0 :(得分:7)

这不是自定义EditBox。在这里EditText与其他ImageViews一起包含父视图。

在whatsapp示例中,有 Imogi ImageView EditText Attach ImageView 相机ImageView >在LinearLayout中。父LinearLayout具有圆角背景。

  • 还可以使用Drawable左和Drawable右,但是我不建议,因为那没有太多控制权。

只是一个建议:

我一直想节省时间。这是一个whatsapp克隆,您可以将其拉出并使用其视图。

https://github.com/Shahar2k5/whatsappClone

这个人在这个图书馆里做得很好。

enter image description here

答案 1 :(得分:2)

在EditText中使用drawableRight属性

<EditText
android:id="@+id/account_et"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:drawableRight="@drawable/icon_backall" //your drawable which you want to use
android:ems="10"
android:hint="@string/str_md_email"
android:padding="10dp" >
</EditText>

答案 2 :(得分:2)

您必须像下面的图片那样进行管理:

enter image description here

上述UI设计代码如下:

<LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="@dimen/_10sdp"
            android:background="@drawable/stockbg"
            android:orientation="horizontal">

            <EditText
                android:id="@+id/edt_sendMeassage"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/_10sdp"
                android:layout_marginRight="@dimen/_10sdp"
                android:layout_weight="1"
                android:maxLines="4"
                android:backgroundTint="@android:color/transparent"
                android:paddingLeft="@dimen/_10sdp"
                android:paddingRight="@dimen/_10sdp"
                android:textSize="@dimen/normal_input_text_size" />

            <LinearLayout
                android:id="@+id/ll_send"
                android:layout_weight="6"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

                <ImageView
                    android:layout_width="@dimen/_40sdp"
                    android:layout_height="@dimen/_20sdp"
                    android:layout_centerVertical="true"
                    android:layout_gravity="center"
                    android:src="@drawable/ic_next_arrow"
                    android:tint="@color/color_gray" />
            </LinearLayout>
        </LinearLayout>

答案 3 :(得分:1)

  

我想将附加文件图标放入EditText,例如将其如何制作为WhatsApp。

如果要在EditText中添加图标,可以使用

android:drawableStart=""
android:drawableEnd=""
android:drawableTop=""
android:drawableLeft=""
android:drawableRight=""
  

如何将其制作为WhatsApp。我该怎么办?

这不是自定义Edittext

您需要将ImageViewEditText包装在ViewGroup的一侧,例如LinearLayoutRelativeLayout

示例代码

<LinearLayout
    android:id="@+id/relativeLayout"
    android:layout_width="match_parent"
    android:padding="10dp"
    android:background="@drawable/test"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_menu_camera" />

    <EditText
        android:layout_width="0dp"
        android:background="@android:color/transparent"
        android:layout_weight="1"
        android:layout_height="wrap_content" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:src="@drawable/ic_menu_camera" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="2dp"
        android:layout_marginRight="2dp"
        android:src="@drawable/ic_menu_camera" />

</LinearLayout>
   android:background="@drawable/test"
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <stroke
        android:width="2dp"
        android:color="@color/colorPrimary" />
    <corners android:radius="25dp" />
</shape>

输出

enter image description here

答案 4 :(得分:0)

您需要根据需要在布局中放置edittext并附加图标,并将圆形背景设置为父级布局

像这样

 <RelativeLayout
        android:id="@+id/sendLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@color/roundedbg"
        android:orientation="horizontal">



        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_toLeftOf="@+id/attachFile"
         android:background="@null"
            android:padding="@dimen/five_dp" />

        <ImageView
            android:id="@+id/attachFile"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/icon"
       />


    </RelativeLayout>

roundedbg.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF"/>
    <stroke android:width="3dp" android:color="#B1BCBE" />
    <corners android:radius="10dp"/>
    <padding android:left="0dp" android:top="0dp" android:right="0dp" android:bottom="0dp" />
</shape>

答案 5 :(得分:0)

最好在如下所示的相对布局中使用wrap edittext和imageview

     <RelativeLayout
                android:layout_width="match_parent"
                android:layout_height="50dp">

                <EditText
                    android:id="@+id/etPassword"
                    android:layout_width="match_parent"
                    android:layout_height="50dp"
                    android:background="@drawable/custom_edittext"
                    android:hint="Password"
                    android:minLines="10"
                    app:passwordToggleEnabled="true"
                    android:singleLine="true"
                    android:inputType="textPassword"
                    android:textSize="14sp"
                    android:paddingLeft="20dp"
                    android:layout_weight="1"
                    android:paddingRight="20dp"
                    tools:ignore="MissingPrefix" />

                <ImageView
                    android:id="@+id/ivPasswordToggle"
                    android:layout_width="24dp"
                    android:elevation="10dp"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginRight="15dp"
                    android:layout_height="24dp"
                    android:background="@drawable/ic_remove_red_eye_black_24dp"/>
            </RelativeLayout>

输出:

enter image description here

在Java代码中,使用imageview