我正在實現一個功能,以便在提示浮動時將提示文本更改爲大寫,反之亦然。從子項獲取父texInputlayout textInputEditText
爲此,我在其子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()
retur ns DecorView
哪些不能鑄造textInputLayout
我的問題是如何從子textInputEditText
得到父母textInputLayout
?
請指導。
爲什麼不在TextInputEditText這樣的xml佈局中爲TextInputLayout分配一個id? –
@DanielRL我已經在xml中分配了id,但它不會在這裏工作,因爲我的重寫方法中的harcoding id只適用於'textinputlayout'而不適用於其他人,我希望它能用於佈局中的每個'textinputlayout' –