以编程方式在TextInputLayout中设置EditText的提示大小

时间:2016-09-06 10:04:09

标签: android android-edittext android-textinputlayout

我正在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

3 个答案:

答案 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);