마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

CustomDrawerLayout 뷰 겹침 이슈 [closed]

0 추천

CustomDrawerLayout을 작성하여 MainActivity의 루트뷰로 사용하고 있습니다.

Click이벤트 처리를 위하여 CustomDrawerLayout을 작성중 뷰가 계속 열린 상태로 화면에 보여져 FragmentContainer를 잡아먹고 잇습니다.

특정 코드를 지우면 뷰는 정상적으로 출력되지만 클릭이벤트에 반응하지 않고 잇습니다.

public class CustomDrawerLayout extends DrawerLayout {

    public CustomDrawerLayout(@NonNull Context context) {
        super(context);
        init(context);
    }

    public CustomDrawerLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

    public CustomDrawerLayout(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private void init(Context context) {
        LayoutInflater.from(context).inflate(R.layout.home_drawer, this, true);
        drawerLayout = findViewById(R.id.drawer_layout);

        drawerSpaceUser = findViewById(R.id.drawer_space_user);
        drawerSpaceChild = findViewById(R.id.drawer_space_child);
        drawerSpaceGroup = findViewById(R.id.drawer_space_group);
        drawerSpaceAnnoun = findViewById(R.id.drawer_space_announ);
        drawerSpaceHelpdesk = findViewById(R.id.drawer_space_helpdesk);
        drawerVersionBtn = findViewById(R.id.drawer_version_btn);

        drawerSpaceUser.setOnClickListener(v -> {
            if (clickListener != null) {
                clickListener.onDrawerItemClick(R.id.drawer_space_user);
            }
        });

        drawerSpaceChild.setOnClickListener(v -> {
            if (clickListener != null) {
                clickListener.onDrawerItemClick(R.id.drawer_space_child);
            }
        });

        drawerSpaceGroup.setOnClickListener(v -> {
            if (clickListener != null) {
                clickListener.onDrawerItemClick(R.id.drawer_space_group);
            }
        });

        drawerSpaceAnnoun.setOnClickListener(v -> {
            if (clickListener != null) {
                clickListener.onDrawerItemClick(R.id.drawer_space_announ);
            }
        });

        drawerSpaceHelpdesk.setOnClickListener(v -> {
            if (clickListener != null) {
                clickListener.onDrawerItemClick(R.id.drawer_space_helpdesk);
            }
        });

        drawerVersionBtn.setOnClickListener(v -> {
            if (clickListener != null) {
                clickListener.onDrawerItemClick(R.id.drawer_version_btn);
            }
        });
    }

    public void setOnDrawerItemClickListener(OnDrawerItemClickListener listener) {
        this.clickListener = listener;
    }
}
질문을 종료한 이유: 해결 완료 - MainActivity의 루트 뷰를 CustomDrawerLayout이 아닌 DrawerLayout으로 수정
개린쓰 (680 포인트) 님이 2023년 7월 10일 질문
개린쓰님이 2023년 7월 10일 closed
public CustomDrawerLayout(@NonNull Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context);
    }

이 부분에서 init 함수를 지우면 뷰는 정상출력되나 클릭이벤트는 작동하지 않습니다..
...