edittext フィールドにラベルを追加する単純なサブクラスを作成しました。ヒントに加えてラベルが欲しい。フィールドは編集可能で、フィールドの右側にヒントがあり、ボックスの左側にラベルがある必要があります。
@Override
public void onDraw(final Canvas canvas) {
super.onDraw(canvas);
if (labelX == -1 || labelY == -1) {
makeTextMeasurements();
}
canvas.save();
canvas.drawText(mLabel, labelX, labelY, mPaint);
canvas.restore();
}
private void makeTextMeasurements() {
mMeasuredTextHeight = getTextHeight(mPaint);
labelX = (int) ViewUtils.getScaledPixels(20, getContext());
labelY = (int) ((getHeight() / 2.0f) + (mMeasuredTextHeight / 2.0f));
}
setInputType を呼び出さない場合、クラスは正常に動作します。しかし、setInputType を呼び出すと、canvas.drawText() で描画されるテキストが表示されません。EditText のソース コードを調べましたが、これが発生する理由を見つけることができませんでした。誰にもアイデアがありますか?