-1

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

4

1 回答 1

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 在布局中的位置

希望这是有道理的!

于 2015-11-18T19:15:22.807 回答