진짜 어려운걸 하고계시는군요...
일단 여러가지 방법이있겠지만.. EditText를 커스텀해서 만들어야되는데요..
Spannable를 사용해서 하는방법이있습니다..
특정이벤트를통해사과라는 단어를 얻으면 그해당 단어에 index를 구한다음
TextView를 BitmapDrawable으로 변환하는방법이있습니다
변환하는 방법은 그렇게 어렵진않은데 인덱스값을 어떻게 구하냐는 로직이 좀 머리아프겠군요..
//해당 텍스트를 BitmapDrawable로 변환하는 로직
SpannableStringBuilder ssb = new SpannableStringBuilder("과일은 뭐뭐뭐 맛난건 뭐뭐뭐");
TextView textView = new TextView(context);
textView.setTextAppearance(context, android.R.attr.textAppearanceSmall);
textView.setTextSize((float)(textView.getTextSize()));
textView.setText(과일);
FontLoader.apply(textView);
BitmapDrawable bitmapDrawable = (BitmapDrawable) extractBitmapFromTextView(textView);
bitmapDrawable .setBounds(0, 0, bmpDrawable.getIntrinsicWidth(), bmpDrawable.getIntrinsicHeight());
ssb.setSpan(new ImageSpan(bitmapDrawable), 과일의 index start, 과일의 index end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
setText(ssb);
public static Object extractBitmapFromTextView(View view) {
try {
int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
view.measure(spec, spec);
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
c.translate(-view.getScrollX(), -view.getScrollY());
view.draw(c);
view.setDrawingCacheEnabled(true);
Bitmap cacheBmp = view.getDrawingCache();
Bitmap viewBmp = cacheBmp.copy(Bitmap.Config.ARGB_8888, true);
view.destroyDrawingCache();
return new BitmapDrawable(viewBmp);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}