如何在TextInputLayout中更改提示文本大小

时间:2016-02-04 14:29:02

标签: android xamarin xamarin.forms android-textinputlayout textinputlayout

假设我想要更改文字大小。我在代码中这样做,它看起来像这样:

_textInputLayout.EditText.SetTextSize(Android.Util.ComplexUnitType.Dip, 40);

当我在条目中写入文本时,它看起来像40dip文本。但是当条目为空时,提示文本看起来像16-18dip。

有没有办法更改提示文字大小?

2 个答案:

答案 0 :(得分:5)

可以通过样式更改最终提示大小/浮动标签大小,并使用以下内容调用SetHintTextAppearance: -

_nativeView.SetHintTextAppearance(App6.Droid.Resource.Style.MyTextInputLayout);

其中MyTextInputLayout的含义如下: -

<style name="MyTextInputLayout" parent="@android:style/TextAppearance">
    <item name="android:textColor">@color/blue</item>
    <item name="android:textSize">44sp</item>
</style>

但是,当您开始输入一些文本时,此样式中的textSize仅应用于最终目的地。

从我所看到的,包括对象的属性,目前似乎不可能改变提示的起始字体大小?

EditText暴露在哪里,你可以改变它。 Hint部分根本不由它处理,而是由TextInputLayout处理。似乎没有任何对象可以获得访问权限,专门针对Hint进行自定义。

答案 1 :(得分:2)

您可以通过在字符串recource中设置大小来实现。

例如:

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

然后在你的XML中写一下

android:hint="@string/edittext_hint"

这将隐藏在提示的较小文本中,但是输入文本的原始大小。

或者像这样:

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