NekoX/TMessagesProj/src/main/java/org/telegram/ui/Components/HintEditText.java

74 lines
2.2 KiB
Java

/*
* This is the source code of Telegram for Android v. 5.x.x.
* It is licensed under GNU GPL v. 2 or later.
* You should have received a copy of the license in this archive (see LICENSE).
*
* Copyright Nikolai Kudashov, 2013-2018.
*/
package org.telegram.ui.Components;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import org.telegram.messenger.AndroidUtilities;
import org.telegram.ui.ActionBar.Theme;
public class HintEditText extends EditTextBoldCursor {
private String hintText;
private float textOffset;
private float spaceSize;
private float numberSize;
private Paint paint = new Paint();
private Rect rect = new Rect();
public HintEditText(Context context) {
super(context);
paint.setColor(Theme.getColor(Theme.key_windowBackgroundWhiteHintText));
}
public String getHintText() {
return hintText;
}
public void setHintText(String value) {
hintText = value;
onTextChange();
setText(getText());
}
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
onTextChange();
}
public void onTextChange() {
textOffset = (length() > 0 ? getPaint().measureText(getText(), 0, length()) : 0);
spaceSize = getPaint().measureText(" ");
numberSize = getPaint().measureText("1");
invalidate();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (hintText != null && length() < hintText.length()) {
int top = getMeasuredHeight() / 2;
float offsetX = textOffset;
for (int a = length(); a < hintText.length(); a++) {
if (hintText.charAt(a) == ' ') {
offsetX += spaceSize;
} else {
rect.set((int) offsetX + AndroidUtilities.dp(1), top, (int) (offsetX + numberSize) - AndroidUtilities.dp(1), top + AndroidUtilities.dp(2));
canvas.drawRect(rect, paint);
offsetX += numberSize;
}
}
}
}
}