我尝试用EditView
.
该解决方案需要结合这样一个事实,即我的自定义视图会在绘制画布时执行各种计算。计算,例如计算中心 X 和 Y 坐标、画布尺寸等。
这些计算将用于EditText
在屏幕上定位。
到目前为止,我已经发现 aRelativeLayout
是关于覆盖的方法。
迄今为止最好的解决方案(这并不理想)是创建一个 custom RelativeLayout
,见下文:
public class MyCustomRL extends RelativeLayout {
public MyCustomRL(Context context) {
super(context);
initView(context);
}
public MyCustomRL(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
}
public MyCustomRL(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initView(context);
}
protected void initView(Context context){
LayoutInflater inflater = LayoutInflater.from(context);
SeekBar_Speedometer v_speedometer = (SeekBar_Speedometer) inflater.inflate(R.layout.rl_custom_speedometer, this, false);
addView(v_speedometer);
RelativeLayout rl_comment = (RelativeLayout) inflater.inflate(R.layout.rl_edittext_comment, this, false);
EditText edit = (EditText) rl_comment.findViewById(R.id.edittext_comment);
edit.setText("Text altered at runtime");
rl_comment.setX(112);
rl_comment.setY(117);
//Log.v("WHATEVER","X: "+v_speedometer.centerX); // = 0
//rl_comment.setX(v_speedometer.centerX);
//rl_comment.setY(v_speedometer.centerY);
addView(rl_comment);
}
}
这基本上有效,EditText
位于那些静态坐标处。但是我希望将 EditText 放置在v_speedometer.centerX
和v_speedometer.centerY
坐标处,但它们为 0,因为v_speedometer
尚未绘制视图!!!!
我应该怎么做?