从子文本输入编辑文本获取父texInputlayout



我正在实现一种功能,当提示浮起时,将textInputlayout提示文本的大小写更改为大写,反之亦然。

为此,我在其子textInputEditText上使用OnFocusChangeListener.为了便于实施,我正在对我的活动实施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()返回无法在textInputLayout中转换的DecorView

我的问题是如何从子textInputEditText获得家长textInputLayout

请指导。

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

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

它根据需要返回textInputlayout

而不是使用TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();TextInputEditText et = (TextInputEditText) v;这样的视图实例,然后TextInputLayout lay = (TextInputLayout)et.getParent().getParent();

您可以在 TextInputLayout 中添加 id,如下所示:

<android.support.design.widget.TextInputLayout
android:id="@+id/nameLayout"
style="@style/LightInputLayoutNoBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/create_contact_account_data_name"
app:hintTextAppearance="@style/TextSmall.Bold">
<android.support.design.widget.TextInputEditText
android:id="@+id/name"
style="@style/LightInputFieldNoBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:drawableEnd="@drawable/ic_book_contacts" />
</android.support.design.widget.TextInputLayout>

并在活动中调用 findViewById 到 TextInputLayout

相关内容

  • 没有找到相关文章

最新更新