コンストラクター値として属性セット(xml値)を取るカスタムビューがあります
public CustomView(Context context) // No Attributes in this one.
{
super(context);
this(context, null, 0);
}
public CustomView(Context context, AttributeSet attrs) {
super(context, attrs);
this(context, attrs, 0)
}
public CustomView(Context context, AttributeSet attrs, int default_style) {
super(context, attrs, default_style);
readAttrs(context, attrs, defStyle);
init();
}
フラグメントクラスでは、ビューを次のように設定しています
CustomView customView = (CustomView) view.findViewById(R.id.customView);
カスタムビューには、高さ、幅、パディングなどのさまざまな値が含まれています。
必要な条件に基づいてこれらの値を変更し、カスタム ビューに戻します。onDrawメソッドに width height コードを配置し、invalidte ビューを呼び出しました。しかし、上記のメソッドは、CustomView クラスで無効化メソッドを呼び出した場合に毎回設定されます。これを克服して、コンストラクターのみで変更された属性セット値を渡すことができるようにするにはどうすればよいですか?
編集:新しい値で更新されたビューを取得できるように、属性コンストラクター中に設定されたビュー値を変更する(新しい値で初期化する)必要があります。@OnDraw または 'Invalidate' のオーバーライドは、invalidate の内部で 1 秒間隔ごとに実行されるメソッドを記述している私にとっては良い機能ではありません。