1
我嘗試將我的自定義視圖與EditView
疊加在一起,獲得了不同的成功。在自定義視圖上疊加編輯視圖
的解決方案需要結合我的自定義視圖不會被畫布上繪製時所執行的各種計算的事實。計算,如鍛鍊中心X和Y cordinates,帆布等
這些計算的尺寸將被用來在屏幕上定位EditText
。
到目前爲止,我已經想通了,一個RelativeLayout
是在考慮到疊加的路要走。
最好的解決方案至今(這是不理想的)是創建一個自定義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
視圖尚未繪製出來!
我應該怎麼做?