安卓 EditText 提示文字大小

92

如何减小EditText提示文本的大小?


2
我认为没有必要调整提示的大小。你为什么想这样做呢? - Praveen
4
提示字体大小非常大,所以我需要将其减小2sp。 - Sasikumar
1
我曾经遇到过同样的问题。我们正在实现一个拨号应用程序,因此拨打的号码可能非常大,而提示文本需要更小以适应所有内容。感谢@Jeka提供的解决方案! - Bradford2000
1
<string name="name"><font size="20">名称</font><small>(按照文档)</small></string> - Sanket Parchande
13个回答

141
你可以通过在字符串资源中设置大小来实现。
例如:
<string name="edittext_hint"><font size="15">Hint here!</font></string>
那么在您的XML中只需编写

android:hint="@string/edittext_hint"

这将导致提示文本变小,但输入文本保持原始大小。

希望对未来的读者有所帮助。


1
如何为“size”属性指定“sp”维度? - redcrow
1
由于您没有像sp这样指定尺寸,这在不同的屏幕尺寸上会有问题,您觉得呢?我找不到任何通过布局xml设置提示大小的方法,而不会在尺寸更改时出现问题。 - Vishwanath gowda k
3
当提示是通过编程设置时,这种方法无法使用。 - ashwin mahajan
@ashwinmahajan https://dev59.com/9HA75IYBdhLWcg3wuLnD#16061380 这个答案会有所帮助 [提示是以编程方式设置的] - Adarsh Vijayan P

61
您可以在 EditText 上减小字体大小-这也会减小 hint 的大小。例如: android:textSize="16sp"

谢谢,你帮我省去了一些麻烦! :) - peterkodermac
很高兴能帮忙! :) - inky
很棒的答案,不需要这些折中方案 :D - Antwan
46
如果我想要两种不同的字号,一种用于真正的文本,另一种用于提示,该怎么办? - redcrow
1
很酷,那是一个相当聪明的回答,但上面的评论是正确的。如果我想要两种不同大小的字体,一种是真正的文本,另一种是提示呢? - robinHood013

38

因为我的提示文本在标准大小的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);
                    }
                }
        });

2
@EVSearchTerm 是他的EditText引用。命名规范被抛弃了。 - Rohit Sharma
1
这种方法是有效的。Android SDK 的问题在于,程序设置文本大小时完全忽略了提示文本大小。另一方面,这使得 longhairedsi 的方法可以简化。你不需要添加 TextWatcher,只需立即调用 editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, mRealTextSize); 即可。然而,longhairedsi 的解决方案可能更加安全。我很好奇这个问题是否会在新的 SDK 版本中得到修复。 - Peter F
谢谢。不要忘记设置初始文本大小(否则当文本为空时,提示的大小可能等于文本大小)。 - CoolMind

31

13

如果您想以编程方式完成它,

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

很喜欢你的解决方案,但不幸的是它没有起作用,从资源中加载并动态设置到TextInputLayout。 - Jamal S

10

编辑框的提示文本大小可以很容易地被缩小。

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

3

在values文件夹下的strings.xml中定义如下内容:

<string name="enter_otp"><font size="16">your text</font></string>

2
@marmor 的方法是最好的。您可以通过更改 <small> --- </small> 标签的数量来调整大小。
您也可以像我一样直接定义 Hint 文本。 view.setHint(Html.fromHtml("<small><small><small>" + "这是提示" + "</small></small></small>")); 希望这可以帮助到您。

1

@user2982553的解决方案对我很有用。你也可以使用AbsoluteSizeSpan,通过它你可以设置提示的确切字体大小。不要使用<font size=\"5\">标签,因为size属性会被忽略。


1
你只需要在TextInputEditText中使用"app:hintTextAppearance="@style/TextInputLayoutHintText"",其中在样式中保持所需的大小即可。
例如:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接