Я реализую Drawable
как текст в начале моего EditText
с использованием setCompoundDrawables
, но я получаю неправильные результаты. Что мне нужно для моего текста, чтобы начать после Drawable
при наборе, но вместо я получаю этуsetCompoundDrawables EditText Text Overlapping
У меня есть 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
. Поэтому я преобразовать текст в 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);
я делаю что-то не так?
EDIT
Я попытался с помощью этого метода field.setCompoundDrawablesWithIntrinsicBounds(R.drawable.my_drawable, 0, 0, 0);
и он работает, но очевидно, что я не могу использовать его, потому что рисуем не определен как ресурс.
Спасибо, что сработал. Просто перегрузите getIntrinsicWidth() и верните ширину текста – Neil
из любопытства: setBounds() did not work? – pskink
Нет ограничений, только измененные размеры Drawable, не меняли начальную позицию – Neil