我想问一下,当我给EditText左填充时,TextInputLayout的文本也会平行于EditText的文本向右移动。我只想给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在布局中的位置
希望它有意义!