カスタム ビューにEditView
.
ソリューションには、カスタム ビューがキャンバスの描画時に実行されるさまざまな計算を行うという事実を組み込む必要があります。中心の X 座標と Y 座標、キャンバスの寸法などの計算。
これらの計算はEditText
、画面上に を配置するために使用されます。
これまでのところRelativeLayout
、オーバーレイに関しては a が進むべき道であることがわかりました。
これまでの最善の解決策 (理想的ではありません) は、 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
はそれらの静的座標に配置されます。v_speedometer.centerX
ただし、EditTextを座標に配置したいのですが、ビューがまだ描画されていないv_speedometer.centerY
ため、それらは 0 です!!!v_speedometer
これをどのように行う必要がありますか?