SetCompoundDrawables Перетаскивание текста EditText

Я setCompoundDrawables Drawable как текст в начале моего EditText с помощью setCompoundDrawables но я получаю неправильные результаты. Мне нужно, чтобы мой текст начинался после Drawable при наборе текста, но вместо этого я получаю это

Введите описание изображения здесь

У меня есть EditText В макете, определенном как это

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/control" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingLeft="4dp" > <EditText android:id="@+id/field" style="@style/TextField" android:inputType="number" /> </LinearLayout> 

Я должен добавить кусок текста как Drawable в начале EditText . Поэтому я конвертирую Text в Drawable используя этот class

 public class TextDrawable extends Drawable { private final String text; private final Paint paint; public TextDrawable(String text) { this.text = text; this.paint = new Paint(); paint.setColor(Color.parseColor("#009999")); paint.setTextSize(30); paint.setAntiAlias(true); paint.setTextAlign(Paint.Align.LEFT); } @Override public void draw(Canvas canvas) { canvas.drawText(text, 0, 6, paint); } @Override public void setAlpha(int alpha) { paint.setAlpha(alpha); } @Override public void setColorFilter(ColorFilter cf) { paint.setColorFilter(cf); } @Override public int getOpacity() { return PixelFormat.TRANSLUCENT; } } 

И я его реализую здесь

 final EditText field = (EditText) widget.findViewById(R.id.field); field.setCompoundDrawables(new TextDrawable(this.label), null, null, null); field.setText(this.value); 

Я делаю что-то неправильно?

РЕДАКТИРОВАТЬ

Я попытался использовать этот метод field.setCompoundDrawablesWithIntrinsicBounds(R.drawable.my_drawable, 0, 0, 0); И он работает, но, очевидно, я не могу использовать его, потому что drawable не определяется как ресурс.

Solutions Collecting From Web of "SetCompoundDrawables Перетаскивание текста EditText"

Поэтому setBounds в ctor Drawable или переопределить getIntrinsicWidth (), вам нужно будет проверить, какой из них работает

Вы можете так сделать

 <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="wrap_content" android:drawableLeft="@drawable/ic_launcher" > 

Попробуйте сделать это –

 field.setCompoundDrawablesWithIntrinsicBounds(new TextDrawable(this.label), null, null, null); 

Вы должны установить границы.