【问题标题】:Custom EditText into Android自定义 EditText 到 Android
【发布时间】:2018-08-16 05:35:59
【问题描述】:

我想将附件图标放入 EditText,例如它是如何制作成 WhatsApp 的。我该怎么做?

【问题讨论】:

    标签: android android-layout


    【解决方案1】:

    那不是自定义的编辑框。这里EditText 被父视图和其他ImageViews 包裹起来。

    在 whatsapp 示例中,有一个 Imogi ImageViewAn EditTextAn Attach ImageViewa camera ImageViewLinearLayout 内。并且父 LinearLayout 具有圆角背景。

    • 也可以使用 Drawable left 和 Drawable right,但 我不建议这样做,因为它没有太多控制。

    只是一个建议:

    我总是想节省时间。这是一个 whatsapp 克隆,你可以拉它并使用它的视图。

    https://github.com/Shahar2k5/whatsappClone

    这家伙在这个图书馆做得很好。

    【讨论】:

      【解决方案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>
      

      【讨论】:

      • 好的,但是他是如何通过图标点击绑定监听器的呢?
      • 对于可绘制的左键或右键单击,请查看this
      【解决方案3】:

      你必须像下图一样管理:

      以上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>
      

      【讨论】:

        【解决方案4】:

        我想将附件图标放入 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>
        

        输出

        【讨论】:

          【解决方案5】:

          您需要在布局中放置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>
          

          【讨论】:

            【解决方案6】:

            最好在下面的相对布局中使用 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>
            

            输出:

            在java代码中使用点击imageview

            【讨论】:

              猜你喜欢
              • 2011-11-11
              • 2015-05-18
              • 2016-04-25
              • 1970-01-01
              • 2014-03-05
              • 2013-10-14
              • 2015-06-10
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多