当前位置: 代码迷 >> Android >> 有没有办法可以在TextInputLayout中居中编辑文本输入和浮动标签?
  详细解决方案

有没有办法可以在TextInputLayout中居中编辑文本输入和浮动标签?

热度:27   发布时间:2023-08-04 10:50:33.0

我想沿着TextInputLayout将白色背景应用于我的EditText。 但是,当我这样做时,edittext输入/提示似乎位于底部,我可以理解这是因为浮动标签的保留空间。 但是,我希望我的EditText位于中心,当浮动标签出现时,它们都会到达中心。 有没有办法实现这个目标?

尝试这个:

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设置为基于组件高度的值,也可以以更可扩展的方式计算。 无论哪种方式,那里都有改进的空间,但希望这个解决方案能让你朝着正确的方向前进。

  相关解决方案