如何在不更改EditText中的文本大小的情况下更改提示文本大小

dev*_*v90 9 android android-layout android-edittext android-fragments

我有一个EditText输入字段.我在其中添加了一个提示.现在我想改变提示文本的大小,但是当我这样做时,它也会影响文本的大小.请指导我如何分别更改提示和文本的大小,并为提示和文本提供不同的字体.

<EditText
    android:layout_width="0dp"
    android:layout_height="50dp"
    android:layout_weight="1"
    android:textSize="12sp"
    android:textColor="#ffffff"                            
    android:fontFamily="sans-serif-light"
    android:hint="MM/YY"
    android:textColorHint="@color/white" />  
Run Code Online (Sandbox Code Playgroud)

Fil*_*sca 30

您可以在资源文件中设置它.

例如:

<string name="hint"><font size="20">Hint!</font></string>
Run Code Online (Sandbox Code Playgroud)

而你的XML:

android:hint="@string/hint"
Run Code Online (Sandbox Code Playgroud)


ear*_*jim 10

提示和文本是独占的,如果其中一个可见,另一个则不可见.

因此,您可以只更改您的属性,EditText如果它是空的(提示是可见的)或不是(文本可见).

例如:

final EditText editText = (EditText) findViewById(R.id.yourEditText);

editText.addTextChangedListener(new TextWatcher() {
    boolean hint;

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        if(s.length() == 0) {
            // no text, hint is visible
            hint = true;
            editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
            editText.setTypeface(Typeface.createFromAsset(getAssets(),
                "hintFont.ttf")); // setting the font
        } else if(hint) {
            // no hint, text is visible
            hint = false;
            editText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
            editText.setTypeface(Typeface.createFromAsset(getAssets(),
                "textFont.ttf")); // setting the font
        }
    }

    @Override
    public void afterTextChanged(Editable s) {
    }
});
Run Code Online (Sandbox Code Playgroud)