안드로이드는 다음과 같이 휠을 날짜나 시간, 숫자만 제공해줍니다.
글자(String)가 쓰여진 휠뷰는 안드로이드 자체적으로 제공해 주지 않습니다. 그래서 lib를 써야합니다.
많은 lib들이 있지만 그중에 가장 괜찮고 안정성 있는 lib라고 생각되어 소개합니다.
Github 주소
https://github.com/maarek/android-wheel
Demo
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.cities_layout);
String[] locationData= new String[]{"남산", "대구", "부산", "인천", "경주", "안산", "서울", "광주", "충주", "강원"};
WheelView country = (WheelView) findViewById(R.id.country);
// Cyclic 여부 true일경우 위아래로 값이 생겨서 무제한 스크롤 가능(직접 해보시길 설명을 못하겟음)
country.setCyclic(false);
country.setCurrentItem(0); // position 설정 혹은 index 설정
country.setVisibleItems(3); // 보여줄 item의 개수(테스트 결과 이 함수는 적용되지 않는다.)
ArrayWheelAdapter<String> adapter = new ArrayWheelAdapter<String>(this, locationData);
adapter.setTextSize(30); // 글씨 크기
country.setViewAdapter(adapter); //어댑터를 설정한다.
country.addScrollingListener( new OnWheelScrollListener() {
@Override
public void onScrollingStarted(WheelView wheel) {
// 스크롤 시작
scrolling = true;
}
@Override
public void onScrollingFinished(WheelView wheel) {
// 스크롤 끝
scrolling = false;
}
});
}
이슈사항
- 아래 그림의 휠 두개는 서로 연동 됩니다. 예를 들어 지역 휠을 컨트롤 하여 "남산"을 선택 시 층은 11층까지 보이도록 갱신됩니다.
앞에 설명과 같이 지역 휠을 컨트롤 하여 "부산"을 선택 시 1층만 보이도록 갱신됩니다.
ex)
남산 - 1,2,3,4,5,6,7,8,9,10,11층
대구 - 1,2,3층
부산 - 1층
인천 - 1,2,3,4,5,6층
.
.
.
-휠을 두개 쓸 경우 층 휠을 맨 밑으로 내리고 바로 지역 휠을 스크롤 할 경우 층 휠의 층수가 보이지 않는 이슈가 있습니다.
해결방법
-완벽한 해결 방법은 아니지만 onScrollingStarted콜백이 호출 될때마다 층휠을 setCurrentItem(0);으로 초기화 해주면 해당이슈사항은 해결 됩니다.
'Android' 카테고리의 다른 글
안드로이드 TabLayout ViewPager (4) | 2017.03.09 |
---|---|
안드로이드 툴바 메뉴 보이지 않도록 설정 (0) | 2017.03.06 |
안드로이드 키보드 이벤트 (0) | 2017.02.23 |
커스텀 UI 스피너 만들기 (0) | 2017.02.17 |
안드로이드 액티비티 애니메이션 (0) | 2016.11.14 |