我想问一下,当我将左边的填充赋予EditText时,TextInputLayout的文本也会转移到与EditText文本平行的右边。我只想给EditText填充,我希望TextInputLayout的文本保持在同一个地方(左)。
答案 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在布局中的位置
希望它有意义!