android - setCompoundDrawables EditText 文字重叠

标签 android android-edittext drawable

我正在使用 setCompoundDrawablesEditText 的开头将 Drawable 作为文本实现,但我得到的结果不正确。我需要的是在输入时让我的文本在 Drawable 之后开始,但我得到的是这个

enter image description here

我有一个 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>

我必须在 EditText 的开头添加一段文本作为 Drawable。所以我使用这个 class

将 Text 转换为 Drawable
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 的构造函数中设置边界,或覆盖 getIntrinsicWidth(),您将需要检查哪个有效

关于android - setCompoundDrawables EditText 文字重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21449925/

相关文章:

android - Camera.open() 阻塞 UI 线程

android - 保存编辑文本

java - 如何使用 AlertDialog 提示输入 PIN

android - 如何让我们的布局适应我们在android中的屏幕设备?

android - 带有图标的自定义 TextView

java - 如何从 Android 应用程序的 Java 代码配置 Pushwoosh

java - View 被推到水平约束布局之外

android - DownloadManager 无法使用 Pie 下载到三星上的外部存储

android - 通过edittext设置文本到textview

android错误设置Drawable