我正在EditText
中使用TextInputLayout
。以编程方式设置textSize
的{{1}}适用于输入文本本身。但是,它不适用于EditText
的提示文本,当输入为空时会显示该文本。
我在这里遗漏了什么或这是一个错误吗?如果是后者,是否有解决方法?
为了说明,这里是我的代码的片段:
自定义EditText
中的 TextInputLayout
:
View
由于我想重复使用不同文字大小的<android.support.design.widget.TextInputLayout
android:id="@+id/password_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/default_password_hint"
android:textColorHint="@color/background_gray">
<EditText
android:id="@+id/txt_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
</android.support.design.widget.TextInputLayout>
,我会通过自定义属性View
传递文字大小:
textSize
并按以下方式将其应用于我的自定义<declare-styleable name="PasswordInputField">
<attr name="textSize" format="dimension"/>
<attr name="hint" format="string"/>
</declare-styleable>
:
View
答案 0 :(得分:1)
<强> Style.xml 强>
<style name="TextAppearence.App.TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/white</item>
<item name="android:textColorHint">@color/white</item>
<item name="android:textSize">18sp</item>
</style>
在TextInput布局中
<TextInputLayout
android:id="@+id/til_signup_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/name"
app:hintTextAppearance="@style/TextAppearence.App.TextInputLayout">
<EditText
android:id="@+id/ed_signup_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textColorHint="@color/white" />
</TextInputLayout>
答案 1 :(得分:0)
您可以通过在字符串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);
}
}
});
答案 2 :(得分:0)
以编程方式简单使用它对我有用
TextInputLayout til = new TextInputLayout(this);
til.setHintTextAppearance(android.R.style.TextAppearance_Large);
您可以自定义样式,如下所示......
<style name="TextInputLayout" parent="@android:style/TextAppearance">
<item name="android:textColor">@color/colorPrimaryDark</item>
<item name="android:textColorHint">@color/colorPrimaryDark</item>
<item name="android:textSize">23sp</item>
</style>
TextInputLayout til = new TextInputLayout(this);
til.setHint("hai);
til.setHintTextAppearance(R.style.TextInputLayout);