Different hint font style and font style text

I want to have a different font style for the tooltip and a font style for entering text into edittext. E.g. Suppose the tooltip font size is 12 and its usual type. But when the user begins to enter text in edittext, the font size of the typed text should be 14 and bold. again, if the user deletes the text, the tooltip should be of the type mentioned above.

+6
source share
3 answers

You can programmatically change the color of the tooltip to make it different from the font style typed in edittext using the following code

editTextId.setHintTextColor(Color.alpha(006666)); 
+4
source

The answer is already set correctly, but at present, you can also specify a different color in the XML file through the android: textColorHint attribute. For example, you could do something like this (assuming you correctly defined your my_favourite_colour as a resource):

 <EditText ... other properties here ... android:textColorHint="@color/my_favourite_colour" </EditText> 
0
source

You can achieve this using SpannableString and MetricAffectingSpan . You can change the font, size and style of the tooltip.

1) Create a custom Hint object:

 import android.graphics.Typeface; import android.text.SpannableString; import android.text.Spanned; import android.text.style.MetricAffectingSpan; public class CustomHint extends SpannableString { public CustomHint(final CharSequence source, final int style) { this(null, source, style, null); } public CustomHint(final CharSequence source, final Float size) { this(null, source, size); } public CustomHint(final CharSequence source, final int style, final Float size) { this(null, source, style, size); } public CustomHint(final Typeface typeface, final CharSequence source, final int style) { this(typeface, source, style, null); } public CustomHint(final Typeface typeface, final CharSequence source, final Float size) { this(typeface, source, null, size); } public CustomHint(final Typeface typeface, final CharSequence source, final Integer style, final Float size) { super(source); MetricAffectingSpan typefaceSpan = new CustomMetricAffectingSpan(typeface, style, size); setSpan(typefaceSpan, 0, source.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE); } } 

2) Create your own MetricAffectingSpan object:

 import android.graphics.Typeface; import android.text.TextPaint; import android.text.style.MetricAffectingSpan; public class CustomMetricAffectingSpan extends MetricAffectingSpan { private final Typeface _typeface; private final Float _newSize; private final Integer _newStyle; public CustomMetricAffectingSpan(Float size) { this(null, null, size); } public CustomMetricAffectingSpan(Float size, Integer style) { this(null, style, size); } public CustomMetricAffectingSpan(Typeface type, Integer style, Float size) { this._typeface = type; this._newStyle = style; this._newSize = size; } @Override public void updateDrawState(TextPaint ds) { applyNewSize(ds); } @Override public void updateMeasureState(TextPaint paint) { applyNewSize(paint); } private void applyNewSize(TextPaint paint) { if (this._newStyle != null) paint.setTypeface(Typeface.create(this._typeface, this._newStyle)); else paint.setTypeface(this._typeface); if (this._newSize != null) paint.setTextSize(this._newSize); } } 

3) Use:

 Typeface newTypeface = Typeface.createFromAsset(getAssets(), "AguafinaScript-Regular.ttf"); CustomHint customHint = new CustomHint(newTypeface, "Enter some text", Typeface.BOLD_ITALIC, 60f); // CustomHint customHint = new CustomHint(newTypeface, "Enter some text", Typeface.BOLD_ITALIC); // CustomHint customHint = new CustomHint(newTypeface, "Enter some text", 60f); // CustomHint customHint = new CustomHint("Enter some text", Typeface.BOLD_ITALIC, 60f); // CustomHint customHint = new CustomHint("Enter some text", Typeface.BOLD_ITALIC); // CustomHint customHint = new CustomHint("Enter some text", 60f); customEditText.setHint(customHint); 
0
source

Source: https://habr.com/ru/post/899218/


All Articles