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