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; } }
您不仅可以更改提示的大小,还可以更改其字体和样式。 我用SpannableString
和MetricAffectingSpan
来解决这个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);
- 是否“shouldOverrideUrlLoading”真的弃用? 我可以用什么来代替?
- …你在AndroidManifest.xml中声明了这个活动吗?
- 我如何使WRAP_CONTENT在RecyclerView上工作
- 如何在材质devise导航抽屉中改变汉堡图标的颜色
- 错误“文件google-services.json从模块根文件夹丢失。 没有它,Google服务插件就无法运行“
- Android – 如何制作像facebook,spotify和Google +的幻灯片菜单
- ObjectAnimatoranimationLinearLayout宽度
- 等待设备时出错:等待模拟器上线300秒后超时
- (私人)Android应用的自动更新