gpt4 book ai didi

android - 从子 textInputEditText 获取父 textInputlayout

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:46:04 24 4
gpt4 key购买 nike

我正在实现一项功能,以将 textInputlayout 提示文本的大小写更改为大写 当提示向上 float 时,反之亦然。

为此,我在其子 textInputEditText 上使用 OnFocusChangeListener。为了便于实现,我正在对我的 Activity 实现 View.OnFocusChangeListener,例如:

public class LoginActivity extends BaseActivity implements View.OnFocusChangeListener

并覆盖 Activity 中的方法,例如:

@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 的 View
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();

上面的代码行抛出一个 fatal error

java.lang.ClassCastException: android.widget.FrameLayout cannot be cast to android.support.design.widget.TextInputLayout

而且非常明显,因为它返回的 Framelayout 不能在 textInputLayout 中转换

如果我使用

TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getRootView();

它再次抛出一个 fatal error ,因为 getRootView() 返回不能在 textInputLayout 中转换的 DecorView

我的问题是如何从子 textInputEditText 获取父 textInputLayout

请指导。

最佳答案

我用下面的代码行解决了这个问题:

TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent().getParent();

它根据需要返回 textInputlayout

关于android - 从子 textInputEditText 获取父 textInputlayout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44883544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com