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

프래그먼트를 숨겼는데도 액티위에 남아서 터치가 되는 문제

0 추천

액티에서 사이드바 메뉴로 사용하기 위해 프래그먼트를 만들었습니다.

그리고 액티의 리니어레이아웃에 프래그먼트를 담아주고,

액티에는 오픈 버튼을 두고 프래그먼트(사이드바 모양)에는 클로즈 버튼을 두어서

슬라이드 애니메이션으로 열고닫고 해주고 있는데요,

메뉴를 닫아도 프래그먼트의 사이드바 메뉴의 UI 들이 보이진 않지만 터치가 되고 동작해서 문제네요..

액티 위에 있어서 액티의 메뉴부분을 터치하면 프래그먼트의 해당위치가 onClick 됩니다.

이런 현상은 어떻게 해결을 해주어야 하는지요..?

 

public class MainActivity extends AppCompatActivity implements SideMenuFragment.OnFragmentInteractionListener {

    Animation translateLeftAnim;
    Animation translateRightAnim;
    LinearLayout slidingPage01;    //슬라이드용 프래그먼트 레이아웃

    private ImageView btn_open;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        slidingPage01 = (LinearLayout)findViewById(R.id.slidingPage01);

        SideMenuFragment frg = new SideMenuFragment();
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.replace(R.id.slidingPage01, new SideMenuFragment());
        fragmentTransaction.commit();

        btn_open = (ImageView)findViewById(R.id.btn_open);

        //애니메이션
        translateLeftAnim = AnimationUtils.loadAnimation(this, R.anim.translate_left);
        translateRightAnim = AnimationUtils.loadAnimation(this, R.anim.translate_right);

        btn_open.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                    btn_open.setEnabled(false);
                    slidingPage01.setEnabled(true);
                    slidingPage01.setVisibility(View.VISIBLE);
                    slidingPage01.startAnimation(translateLeftAnim);
            }
        });
    }

    void CloseMenu(){    // 프래그먼트에서 닫기버튼 누르면 이 함수 호출
        btn_open.setEnabled(true);
        slidingPage01.startAnimation(translateRightAnim);
        slidingPage01.setVisibility(View.GONE);
        slidingPage01.setEnabled(false);
    }
}

 

파르네제 (2,030 포인트) 님이 2018년 5월 24일 질문

1개의 답변

0 추천
 
채택된 답변
많은 분들이 이런 경우가 존재하는데 fragment 에 해당하는 xml 의 root element 에 android:clickable 값을 true 주면 해결됩니다. view 에 click 이 안되니 하위 뷰가 클릭 되는 현상이에요
aucd29 (218,390 포인트) 님이 2018년 5월 25일 답변
파르네제님이 2018년 6월 12일 채택됨
...