This is pwd_icon.png
If image does not work properly, create an android resource directory named : drawable-xxhdpi and put your image here.
1.activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#dcdcdc"
android:padding="16dp">
<EditText
android:layout_width="match_parent"
android:layout_height="50dp"
android:id="@+id/editText"
android:inputType="text|textVisiblePassword"
android:background="#fff"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
</RelativeLayout>
2.pwd_icon_padding.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/pwd_icon"
android:bottom="5dp"/>
</layer-list>
3.MainActivity.java
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.text.Spannable;
import android.text.TextWatcher;
import android.text.style.ImageSpan;
import android.widget.EditText;
public class MainActivity extends Activity implements TextWatcher{
EditText editText;
Spannable.Factory spannableFactory;
int lastIndex = -1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.editText);
spannableFactory = Spannable.Factory
.getInstance();
editText.addTextChangedListener(this);
}
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence s, int start, int count, int after) {
if (start>4) {
editText.removeTextChangedListener(this);
editText.setText(getIconText(getApplicationContext(), s, start));
editText.addTextChangedListener(this);
editText.setSelection(s.length());
}
}
@Override
public void afterTextChanged(Editable editable) {
}
public Spannable getIconText(Context context, CharSequence text, int index) {
Spannable spannable = spannableFactory.newSpannable(text);
if (index>lastIndex) {
spannable.setSpan(new ImageSpan(context, R.drawable.pwd_icon_padding),
index, index + 1,
Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
}
lastIndex=index;
return spannable;
}
}

EmoticonEmoticon