Как изменить размер текста подсказки в 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);
}
}
});