有没有一种方法可以将EditText输入和浮动标签居中在TextInputLayout中?

3
我想在TextInputLayout上为我的EditText应用白色背景。然而,当我这样做时,EditText的输入/提示似乎在底部,我理解这是由于浮动标签的保留空间所致。但是,我希望我的EditText位于中心,并且当浮动标签出现时,它们两者都会居中。有没有办法可以实现这一点?
1个回答

0

试试这个:

public static void addTextInputLayoutWatcher(TextInputLayout inputLayout) {

    EditText editText = inputLayout.getEditText();
    if (editText == null)
        return;

    float offset = inputLayout.getResources().getDimensionPixelOffset(R.dimen.inputlayout_focus_offset);

    editText.setOnFocusChangeListener((v, hasFocus) -> {

        float absY = initTag(inputLayout);

        if (hasFocus || editText.getText().length() > 0) {
            inputLayout.setY(absY + offset);
        } else {
            inputLayout.setY(absY);
        }
    });
}

private static float initTag(TextInputLayout inputLayout) {

    float absY;
    Object tag = inputLayout.getTag();

    if (tag == null) {
        // Setting for the first time
        absY = inputLayout.getY();
        inputLayout.setTag(absY);
    } else {
        absY = (float) tag;
    }

    return absY;
}

所以,每当TextInputLayout获得焦点或填充时,给它一个偏移量;否则将其重置为原始位置(在开始时保存在视图标记中)。
您可以将inputlayout_focus_offset设置为基于组件高度的值,也可以以更可扩展的方式进行计算。无论哪种方式,都有改进的空间,但希望这个解决方案能让您朝着正确的方向前进。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接