textInputlayout
ヒントのテキストを大文字に変更する機能を実装していますヒントが浮かんでいるときにヒントのテキストを大文字に変更します。子のtextInputEditTextから親のtexInputlayoutを取得
そのため、textInputEditText
に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()));
}
}
}
それは簡単に私のような私の活動にView.OnFocusChangeListener
を実装しています実装するようにするにはラインを使用して、親textInputLayout
は
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getParent();
上記のコード行は、致命的なエラーをスロー
とjava.lang.ClassCastException:android.widget.FrameLayoutはandroid.support.design.widget.TextInputLayout
に キャストすることはできません、それはtextInputLayout
にキャストすることはできませんFramelayout
を返すので、それは非常に明白です
そして、私は
TextInputLayout textInputLayout = (TextInputLayout) findViewById(v.getId()).getRootView();
を使用する場合は、再度getRootView()
returので、致命的なエラーがスローされますns DecorView
キャスト不可textInputLayout
私の質問は、親からtextInputLayout
を得る方法です。textInputEditText
?
ご案内しています。
TextInputEditTextのようなxmlレイアウトでTextInputLayoutにIDを割り当てないのはなぜですか? –
@DanielRL私はすでにxmlにidを割り当てていますが、オーバーライドされたメソッドのIDのharcodingは他のものではなく 'textinputlayout'のためだけに機能し、レイアウト内のすべての' textinputlayout' –