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


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

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

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

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

2 3

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.

Вы можете сделать это, установив размер в строке 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);
                }
            }
    });