我正在实现一个功能,当提示浮动时将textInputlayout
提示文本的大小写更改为大写,反之亦然。
为此,我OnFocusChangeListener
在其 child 上使用textInputEditText
。为了便于实施,我正在实施View.OnFocusChangeListener
我的活动,例如:
public class LoginActivity extends BaseActivity implements View.OnFocusChangeListener
并覆盖活动中的方法,例如:
@Override
public void onFocusChange(View v, boolean hasFocus) {
if(findViewById(v.getId()) instanceof TextInputEditText){
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();
if(hasFocus){
textInputLayout.setHint(textInputLayout.getHint().toString().toUpperCase());
}else{
textInputLayout.setHint(Utility.modifiedLowerCase(textInputLayout.getHint().toString()));
}
}
}
在上述方法中,我试图textInputLayout
使用该行获取父级的视图
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();
上面这行代码抛出了一个致命错误
java.lang.ClassCastException: android.widget.FrameLayout 无法转换为 android.support.design.widget.TextInputLayout
这很明显,因为它返回Framelayout
了不能被投射的textInputLayout
如果我使用
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getRootView();
它再次抛出一个致命错误,因为getRootView()
返回DecorView
不能被强制转换textInputLayout
我的问题是如何textInputLayout
从孩子那里得到父母textInputEditText
?
请指导。