Android的EditText提示大小

如何减lessEditText提示大小?

你可以通过在stringrecource中设置一个大小来完成。

例如:

 <string name="edittext_hint"><font size="15">Hint here!</font></string> 

然后在你的XML只是写

 android:hint="@string/edittext_hint" 

这将提示在一个较小的文本提示,但input文本的原始大小。

希望这有助于未来的读者

您可以减lessEditText上的字体大小 – 这也会减小hint的大小。 即android:textSize="16sp"

我也必须这样做,因为我的提示不符合标准大小的EditText。 所以我做了这个(在XML设置textSize到mHintTextSize):

 MYEditText.addTextChangedListener(new TextWatcher(){ @Override public void afterTextChanged(Editable arg0) { // TODO Auto-generated method stub } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub } @Override public void onTextChanged(CharSequence arg0, int start, int before, int count) { if (arg0.length() == 0) { // No entered text so will show hint editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, mHintTextSize); } else { editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, mRealTextSize); } } }); 

您可以将简单的HTML属性设置为提示string本身。

请参阅此处接受的答案: Android EditText提示

编辑:只是玩它自己,这对我工作:

 view.setHint(Html.fromHtml("<small><small><small>" + getString(R.string.hint) + "</small></small></small>")); 

这是fromHtml接受的标签列表: http ://commonsware.com/blog/Android/2010/05/26/html-tags-supported-by-textview.html(虽然没有为我工作)

如果你想以编程的方式做到这一点,

 SpannableString span = new SpannableString(strHint); span.setSpan(new RelativeSizeSpan(0.5f), 0, strHint.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); editText.setHint(span); 

很容易减lessedittext的提示大小

 editText.setHint(Html.fromHtml( "<font size=\"5\">" + "hinttext1" + "</font>" + "<small>" + "hinttext2" + "</small>" )); 

@marmor的方法是最好的一个。 您可以更改<small> --- </small>标签的数量来调整尺寸。

您也可以像我一样直接定义提示的文本

view.setHint(Html.fromHtml("<small><small><small>" + "This is Hint" + "</small></small></small>"));

希望这会有所帮助。

@ user2982553的解决scheme非常适合我。 您也可以使用AbsoluteSizeSpan ,您可以使用它设置提示的确切字体大小。 不要使用<font size=\"5\"> tag,因为size属性被忽略。

我需要为提示文字设置更大的尺寸。

 public static class LargeSizeTextWatcher implements TextWatcher { private final EditText mEditText; private final int mOriginalSize; private final int mLargeSize; private int mLastLength; TrackingNumberTextWatcher(EditText editText) { mEditText = editText; mOriginalSize = (int) editText.getTextSize(); mLargeSize = editText.getResources().getDimensionPixelSize(R.dimen.text_size_large); mLastLength = editText.length(); if (mLastLength != 0) { mEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mLargeSize); } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { int length = s.length(); if (length == 0) { mEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mOriginalSize); } else if (mLastLength == 0) { mEditText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mLargeSize); } mLastLength = length; } } 

您不仅可以更改提示的大小,还可以更改其字体和样式。 我用SpannableStringMetricAffectingSpan来解决这个MetricAffectingSpan

1)创build一个自定义的Hint对象:

 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)创build自定义的MetricAffectingSpan对象:

 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)使用:

 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);