Android Tab Activity
Main Page 에서 사용할 Tab Activity 구현
찾아본 사이트 중 몇 개
1. http://thdev.tech/androiddev/2017/05/06/Android-Studio-Create-Swipe-View.html (Android Studio에서 Swipe View 만들기)
2. http://itmir.tistory.com/283 (안드로이드 탭을 구현해 보자, Fragment)
Android Studio - New Project - Tabbed Activity 를 사용해서 새로운 프로젝트를 생성했다.
프로젝트를 생성하기전에 Tab 페이지 레이아웃을 정의할수 있다.
Swipe View (View Pager) : Swipe만 할 수 있는 기본적인 layout
Action bar tabs (with ViewPager) : tab bar가 생기면서 tab을 눌렀을때 해당 tab으로 옮길 수 있는 layout
Action bar Spinner : spinner가 뭔지 모르겠지만 Spinner가 포함된 layout
이 세개 레이아웃중에 두번째 Action bar tabs (with View Pager) 를 사용하였다.
처음 상태에서 앱을 실행시키면 이전 게시글에 올린 사진과 별 다를바 없는 어플이 만들어진다.
다른점은 Toolbar라고 해서 앱 이름이 떠있는 것이 있고, 각 탭마다 Section 1,2,3라는 이름과, Hello World라는 내용이 들어가있다.
여기서 Toolbar를 없애고싶었다.
그래서 Java며 xml이며 뒤져가면서 코드넣고 이것저것했으나 사라지지 않아서 xml Design Tab에서 Delete로 지워버렸다.
그랬더니 툴바가 아예사라져서 깨끗해졌다.
두번째로 탭의 이름들은 /res/values/strings.xml에 저장이 되어있다.
원래 써있던 것들을 다음과 같이 수정하였다.
<string name="tab_text_1">Today</string>
<string name="tab_text_2">Previous</string>
<string name="tab_text_3">Settings</string>
세번째로 Hello World. Section:1 ~ 3 까지 되어있는 tab들을 내가 원하는 페이지로 바꾸고 싶었다.
각 블로그들을 참조하고 코드를 읽어보면서 어떻게 바꾸는지 찾았고 다음과 같이 수정하였다.
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) { //탭했을때 나오는 페이지
if (position==0)
return new todayFragment();
else if (position==1)
return new previousFragment();
else
return new settingsFragment();
}
새로운 페이지를 리턴해주어야하는데 해줄값들이 없기 때문에
MainActivity에 todayFragment(), previousFragment(), settingsFragment()를 만들었다.
public static class todayFragment extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState){
//Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_today, container,false);
return view;
}
}
Inflater 함수를 찾아보니 xml로 만든 page를 구현해주는 함수인거 같다.
그래서 /res/layout 에 생성해주고 각각 페이지를 빈 페이지로 구현하였다.,
나중에 이 페이지에다가 필요한 기능 구현해야겠다.
MainActivity를 읽다보면 다음과 같은것을 찾을수 있다.
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
만들어진(보여지는) tab의 개수를 뜻한다. 나중에 2개로 줄인다거나 4개 이상의 tab을 만들때 이 함수도 고쳐야한다는 뜻이다.