TextInputLayout的文本与EditText文本平行移动



我想问一下,当我给EditText左填充时,TextInputLayout的文本也会平行于EditText的文本向右移动。我只想给EditText添加填充,我希望TextInputLayout的文本保持在同一位置(左)。

这是因为Edittext的所有属性(如填充和其他属性)都用于决定TextInputLayout在布局中的位置
您可以查看TextInputLayout类源代码以了解更多详细信息。。

在其中,您将找到一个名为的方法:
onLayout(boolean changed, int left, int top, int right, int bottom)

方法实现可能会给你更多的想法:

 @Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
    super.onLayout(changed, left, top, right, bottom);
    if (mEditText != null) {
        final int l = mEditText.getLeft() + mEditText.getCompoundPaddingLeft();
        final int r = mEditText.getRight() - mEditText.getCompoundPaddingRight();
        mCollapsingTextHelper.setExpandedBounds(l,
                mEditText.getTop() + mEditText.getCompoundPaddingTop(),
                r, mEditText.getBottom() - mEditText.getCompoundPaddingBottom());
        // Set the collapsed bounds to be the the full height (minus padding) to match the
        // EditText's editable area
        mCollapsingTextHelper.setCollapsedBounds(l, getPaddingTop(),
                r, bottom - top - getPaddingBottom());
        mCollapsingTextHelper.recalculate();
    }
  }

您可以看到,该方法中的l和r值是使用mEdittext.getCompoundPaddingLeft()(这只是Edittext上设置的paddingLeft属性)和mEdittext.getCompoundPaddingRight()计算的,它们用于决定您的textinputlayout在布局中的位置

希望它有意义!

最新更新