TextInputLayout的文本与EditText文本并行移位

时间:2015-11-18 08:55:12

标签: android android-edittext android-textinputlayout

我想问一下,当我将左边的填充赋予EditText时,TextInputLayout的文本也会转移到与EditText文本平行的右边。我只想给EditText填充,我希望TextInputLayout的文本保持在同一个地方(左)。

1 个答案:

答案 0 :(得分:0)

这是因为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在布局中的位置

希望它有意义!