カスタム EditText コンポーネントの高さをプログラムで設定しようとしていますが、成功しません。カスタム フォントを設定するために、EditText から継承するカスタム クラスがあります。EditText の高さとパディングを更新したいのですが、すべての意図が更新されません。XML ファイルで高さを設定した場合のみ、高さが更新されます。
ここで XML:
<example.ui.customcontrols.CustomEditText
android:id="@+id/txtUsername"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dip"
android:layout_marginTop="2dip"
android:inputType="text"
android:singleLine="true" />
カスタム EditText のコードは次のとおりです。
public class CustomEditText extends EditText {
public CustomEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.init();
}
public CustomEditText(Context context, AttributeSet attrs) {
super(context, attrs);
this.init();
}
public CustomEditText(Context context) {
super(context);
this.init();
}
public void init() {
UIHelper.setTypeface(this);
this.setTextSize(17);
// This is not working.
this.setLayoutParams(newLayoutParams(LayoutParams.FILL_PARENT, 10));
this.setPadding(this.getPaddingLeft(), 0, this.getPaddingRight(), 0);
}
}
同じものを使用する同様の投稿を見たことがありますが、機能させることができませんでした。
アップデート:
迅速な回答が得られたので、シナリオの説明を以下に示します。
- アクティビティ レイアウトに動的に追加される EditText がたくさんあります。アクティビティからではなく、カスタム コントロールからそれを行う必要があります。layoutparams を読み取って設定するために、EditText (onDraw、onPredraw など) で適切なイベントを探しています。オーバーライドする適切なイベントが見つかったらお知らせください。もう一度!
- getLayoutParams は、ビュー (EditText) のコンストラクターで null を返します。したがって、レイアウトがインスタンス化されると、適切なイベントに対処することが解決策になると思います。
- これまでのところ、onDraw、onLayout、onFinishInflate などの多くのイベントについて試してみましたが、param は無視されるか、例外がスローされます。
現在の回答は Tks、それ以上の回答は TIA でお願いします。
ミルトン。