2011-07-29 80 views
0

我正在尝试创建自定义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; 
} 

}

提前致谢

回答

0

这不会工作,因为电视没有附加到视图hierarych,所以它的宽度和高度为0. TextView使用特殊的类(布局)。来衡量和绘制文本,所以你必须可能也修改这个类。

+0

zenob,谢谢你的回复。什么可能是这个问题的解决方法?请帮帮我。如何使电视(TextView)可见? – Niresh