我想问一下,当我将左填充添加到 EditText 时,TextInputLayout 的文本也会向右移动,与 EditText 的文本平行。我只想为 EditText 提供填充,我希望 TextInputLayout 的文本保持在同一位置(左)。
问问题
275 次
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 回答