[사진 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 을 터치해도 아무런 이벤트가 발생하지 않는다는 것이다.
반응형