본문 바로가기

ViewPager

[Android] Viewpager swipe disable ViewPager에 Touch로 인한 Page 이동을 막고자 할 때 아래와 같이 Custom한 ViewPager를 사용 하세요. package com.namuon.ringq.widget.viewpager; import android.content.Context; import android.support.v4.view.MotionEventCompat; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; public class SwipeViewPager extends ViewPager { private boolean enabled; public SwipeViewPag.. 더보기
[Android][Glide] Viewpager 에 이미지가 갱신 되지 않는 현상 이 내용은 많이 발생 하지 않는 문제 입니다. UI가 좀 복잡해지게 되면 일어날 수가 있는데요. 안드로이드 이미지를 로드하기 위해 요즈음 많이 사용하는 Library가 Glide 입니다.Picasso도 있고, Universal Image Loader도 있는데요. 전 가볍고 기능도 많은 Glide를 많이 사용 합니다. Glide 를 쓰게 되면 아래와 같은 문제점이 발생했습니다.(다른 라이브러리들은 발생하지 않음) ViewPager 안에서 ListView,RecyclerView,GridView 같은 Adapter를 필요로 하는 View가 포함 되어 있는 상태에서, 해당 View에 이미지를 재로드 할 때 이미지가 발생 하지 않는 현상 발생. 참고 : https://groups.google.com/forum/#.. 더보기
[Android] pointerindex out of range ViewPager를 이용할 때 위와 제목과 같이 아래 Exception이 발생하기도 한다.(저 같은 경우 PhotoView Library를 사용하다가 에러 발생) java.lang.IllegalArgumentException: pointerIndex out of range 구글링을 해보고, PhotoView 샘플에서 살펴보니...해결 책은 해당 Exception을 예외 처리 해주는 걸로 마무리가 되어 있었다. ViewPager를 커스텀 하게 하나 추가하여 아래와 같이 onInterceptTouchEvent를 예외 처리 한다. // pointerIndex out of range @Override public boolean onInterceptTouchEvent(MotionEvent ev) { try { r.. 더보기
[Android] Viewpager가 갱신이 되 않는 현상. 아래와 같이 getItemPosition을 불러와 넣어주면,notifyDataChanged 함수를 호출 할 때, 전체 갱신이 일어납니다. public int getItemPosition(Object object) { return POSITION_NONE; } 참고하세요. 더보기
[Android] ViewPager + SwipeRefreshLayout ViewPager와 SwipeRefreshLayout을 같이 사용할 경우, 서로 스크롤이 엉켜 ViewPager의 스크롤이 엉성하게 된다. 이럴 경우 iOS 같이 Horizontal일 경우에 SwipeRefreshLayout을 Disable을 시키고,Vertical 일 경우 Enable을 시키는 방식을 이용하면 된다. 1. Horizontal 인지 파악하는 Detector를 하나 만들어 둔다.public static class XScrollDetector extends GestureDetector.SimpleOnGestureListener { @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float di.. 더보기
[Android] TabLayout with ViewPager 에서 tab을 클릭 했을 때 TabLayout을 사용할 때, OnClickListener는 먹히지 않습니다. TabLayout의 자식뷰에 OnClickListener가 설정이 되지 않는 것이 원인 입니다.(만약, addTab을 이용하여 추가할 경우 해당 View에 setTag,getTag로 구분으로 줘서 이용해도 될것이다.) 대부분 ViewPager와 TabLayout을 아래와 같이 설정 할 것이다. FragmentPagerAdapter pagerAdapter = new FragmentPagerAdapter(getActivity().getSupportFragmentManager()); TabLayout tabs = (TabLayout) mRootView.findViewById(R.id.tabLayout); ViewPager view.. 더보기
[Android] Tablayout이 보이지 않을 때 TabLayout을 사용하면 Tab과 ViewPager를 손쉽게 연결 시켜서 사용할 수 있습니다.정말 편하고 안정적으로 이용할 수 있는데요. 사용하다가보면 갑자기 TabLayout이 안보이는 현상이 일어납니다.레이아웃은 차지하고 있는데... indicator와 text만 보이지 않을때가 있습니다. 왜왜??? 열심히 구글링을 해보니 역시나 바로 결론이 안나오더군요. 원인은 TabLayout이 아직 로딩되지 않은 상태에서 TabLayout을 셋팅하는 함수를 호출해서 화면에 출력이 되지 않은듯 합니다. 해결책!tabLayout.post(new Runnable() { @Override public void run() { tabLayout.setupWithViewPager(mViewPager); tabLayout.. 더보기
[Android] 한 FrameActivity 안에 여러개의 ViewPager를 사용할 때 주의점. FrameActivity 에서 ViewPager를 하나만 사용할 경우, 아래와 같은 예제를 많이 이용하실 껍니다.package com.truiton.fragmentpageradapter; import android.os.Bundle;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.view.Menu;import android.view.. 더보기