Как изменить размер текста подсказки в TextInputLayout

Предположим, я хочу изменить размер текста. Я делаю это в коде, и это выглядит так:

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

Когда я пишу текст в записи, это выглядит как текст 40dip. Но когда запись пуста, текст подсказки выглядит как 16-18dip.

Есть ли способ изменить размер текста подсказки?

2 ответа

Решение

Изменение окончательного размера подсказки / размера плавающей метки возможно с помощью стиля и вызова 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,

Вы можете сделать это, установив размер в строковом источнике.

Например:

<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);
                }
            }
    });
Другие вопросы по тегам