禁用线性布局内的所有edittext

时间:2013-12-31 20:38:15

标签: android android-linearlayout

我正在尝试禁用线性布局中的所有字段。线性布局中有许多edittext和textview。但是,我只是试图禁用edittext。我能够禁用所有孩子,但我希望能够禁用编辑文本。有没有办法做到这一点?

3 个答案:

答案 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);
        }
    }
}