개발/Mobile

[Android] 안드로이드 TabLayout Tab 터치 이벤트

hojak99 2018. 4. 27. 09:58

[사진 1: TabLayout]



사진과 같이 ViewPager 와 TabLayout 을 사용해 페이지를 만들었다고 하자. 이 때 [TAB 1], [TAB 2], [TAB 3] 와 같은 탭을 클릭할 때 팝업창을 띄운다던가의 이벤트를 만들고 싶다.


TabLayout tabLayout = (TabLayout)findViewById(R.id.tabs);
tabLayout.setupWithViewPager(mViewPager);

아마 다음과 같은 코드가 작성 돼 있을 것이다.



우선 TabLayout 의 child view 를 가져온다.

LinearLayout tabStip = ((LinearLayout) tabLayout.getChildAt(0));

TabLayout 의 child view 는 LinearLayout 인 것 같다. 그리고 그 LinearLayout 의 child view 로 Tab 이 존재하는 것 같다.


tabStip.getChildAt(number).setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        switch (motionEvent.getAction()) {
            case MotionEvent.ACTION_UP :
                new AlertDialog.Builder(context)
                        .setTitle("Test")
                        .setMessage("Touch")
                        .setPositiveButton(getString(R.string.yes),
                                new DialogInterface.OnClickListener() {

                                    public void onClick(DialogInterface dialog, int which) {

                                    }
                                })
                        .show();
                break;
        }

        // 반환 값을 true 주면 Tab 을 터치해도 화면이 변경되지 않는다.
        return true;
    }
});


여기서 주의해야할 부분이 반환값을 true 로 주면 tab 을 터치해도 아무런 이벤트가 발생하지 않는다는 것이다.

반응형