我想沿 TextInputLayout 将白色背景应用于我的 EditText。但是,当我这样做时,edittext 输入/提示似乎在底部,我可以理解这是因为浮动标签的保留空间。但是,我希望我的 EditText 位于中心,当浮动标签出现时,它们都位于中心。有没有办法可以做到这一点?
问问题
469 次
1 回答
0
尝试这个:
public static void addTextInputLayoutWatcher(TextInputLayout inputLayout) {
EditText editText = inputLayout.getEditText();
if (editText == null)
return;
float offset = inputLayout.getResources().getDimensionPixelOffset(R.dimen.inputlayout_focus_offset);
editText.setOnFocusChangeListener((v, hasFocus) -> {
float absY = initTag(inputLayout);
if (hasFocus || editText.getText().length() > 0) {
inputLayout.setY(absY + offset);
} else {
inputLayout.setY(absY);
}
});
}
private static float initTag(TextInputLayout inputLayout) {
float absY;
Object tag = inputLayout.getTag();
if (tag == null) {
// Setting for the first time
absY = inputLayout.getY();
inputLayout.setTag(absY);
} else {
absY = (float) tag;
}
return absY;
}
所以,每当 TextInputLayout 有焦点或被填充时,给它那个偏移量;否则将其重置为原始位置(保存在开头的视图标签中)。
您可以将 inputlayout_focus_offset 设置为基于组件高度的值,也可以以更可缩放的方式计算。无论哪种方式,那里都有改进的余地,但希望这个解决方案能让您朝着正确的方向前进。
于 2017-03-31T05:04:05.787 回答