How to set ImageView in edittext while entering text?


This example demonstrate about How to set ImageView in edittext while entering text.

Step 1 − Create a new project in Android Studio, go to File ⇒ New Project and fill all required details to create a new project.

Step 2 − Add the following code to res/layout/activity_main.xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   android:orientation="vertical"
   android:gravity="center"
   android:layout_marginTop="30dp"
   tools:context=".MainActivity">
   <EditText
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:layout_marginLeft="10dp"
      android:layout_marginRight="10dp"
      android:paddingStart="5dp"
      android:background="@drawable/rounded_edittext"
      android:drawableStart="@android:drawable/ic_menu_search"
      android:paddingLeft="5dp" />
</LinearLayout>

In the above code, we have taken edit text and added background as background.xml.

Step 3 − Add the following code to drawable/ background.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="1dp"
      android:color="#2f6699" />
   <corners
      android:radius="10dp" />
</shape>

Step 4 − Add the following code to java/MainActivity.xml

package com.example.myapplication;

import android.annotation.TargetApi;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.annotation.MainThread;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.EditText;
import android.widget.ImageView;

public class MainActivity extends AppCompatActivity {
   @TargetApi(Build.VERSION_CODES.LOLLIPOP)
   @RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN)
   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      final EditText editText=findViewById(R.id.edit_query);
      final Drawable image = MainActivity.this.getResources().getDrawable( R.drawable.sir );
      image.setBounds(0, 0, 40, 40);
      editText.addTextChangedListener(new TextWatcher() {
         @Override
         public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            editText.setCompoundDrawables(null,null,null,null);
         }

         @Override
         public void onTextChanged(CharSequence s, int start, int before, int count) {
            if(count>2 && count !=0)
               editText.setCompoundDrawables(image,null,null,null);
         }

         @Override
         public void afterTextChanged(Editable s) {
         }
      });
   }
}

Let's try to run your application. I assume you have connected your actual Android Mobile device with your computer. To run the app from android studio, open one of your project's activity files and click Run  icon from the toolbar. Select your mobile device as an option and then check your mobile device which will display your default screen –

Now enter any 3 or more than 3 letters, it will show the image as shown below –

Click here to download the project code

Updated on: 27-Jun-2020

362 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements