我正在尝试禁用线性布局中的所有字段。线性布局中有许多edittext和textview。但是,我只是试图禁用edittext。我能够禁用所有孩子,但我希望能够禁用编辑文本。有没有办法做到这一点?
答案 0 :(得分:6)
ll
是你的线性布局:
LinearLayout ll = (LinearLayout) findViewById(R.id.myLLid);
for (View view : ll.getTouchables()){
if (view instanceof EditText){
EditText editText = (EditText) view;
editText.setEnabled(false);
editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
}
}
答案 1 :(得分:0)
LinearLayout linearLayout =
(LinearLayout) getView().findViewById(R.id.contentPanel);
for (int i=0;i<linearLayout.getChildCount();i++){
View view = ll.getChildAt(i);
if (view instanceof EditText){
EditText editText = (EditText) view;
editText.setEnabled(false);
}
}
答案 2 :(得分:0)
递归是最简单的方法。更安全地抓住他们。
private void setAllEditTextEnabled(@NonNull View view, boolean enable){
if (view instanceof EditText) {
view.setEnabled(enable);
}
else if (view instanceof ViewGroup) {
for (int i = 0; i < ((ViewGroup) view).getChildCount(); i++) {
View innerView = ((ViewGroup) view).getChildAt(i);
setAllEditTextEnabled(innerView, enable);
}
}
}