将视图绘制到自定义EditText视图画布中

时间:2011-07-29 05:23:36

标签: android android-edittext

我正在尝试创建自定义的EditText视图。这个功能是,当我们输入时,它将在屏幕上显示加密的字符串(类似于密码显示,而不是***我想显示加密文本)。

我不想在我的onDraw()中使用canvas.drawText()。我想仅使用TextView来绘制文本。(原因是

这是我的自定义视图代码。我遇到问题,我的EditText中没有显示任何内容。

public class MyEditText extends EditText {

Context context = null;
private TextView tv = null;
LinearLayout ll = null;

public TamilEditText(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init(context);
}

public TamilEditText(Context context, AttributeSet attrs) {
    super(context, attrs);
    init(context);
}

public TamilEditText(Context context) {
    super(context);
    this.context = context;
    init(context);
}

private void init(Context context) {
    LayoutInflater li = LayoutInflater.from(context);
    ll = (LinearLayout) li.inflate(R.layout.txtlayout, null);
    tv = (TextView) ll.findViewById(R.id.txt);
}

@Override
protected void onDraw(Canvas canvas) {
    //super.onDraw(canvas);

    tv.draw(canvas);
    String str = encrypt(getText().toString());
    tv.setText(str);
}

private String encrypt(String str) {
    return str;
}

}

提前致谢。

1 个答案:

答案 0 :(得分:0)

这不会起作用,因为电视没有附加到视图hierarych所以它的宽度和高度为0。 TextView使用特殊类(Layout)。测量和绘制文本,所以你可能还需要修改这个类。