ActionBar에서 Tab 기능을 사용하면 ActionBar의 여유공간에 따라 Tabs의 위치가 달라질 수 있습니다.
ActionBar에 Tab 추가
- ActionBar에 Tab을 추가하기 위해서는 getActionBar()을 이용하여 ActionBar를 가지고 온다.
- bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this));를 사용하여 Tab을 추가한다
- bar.setNavigationMode()를 설정해 준다.(ActionBar.NAVIGATION_MODE_TABS로 설정해 주시면 Tabs 영역이 나타나게 된다.)
- setTabListener를 사용하여 TabListener를 등록 해준다.
@Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_navigator); findViewById(R.id.btnNavi01).setOnClickListener(this); final ActionBar bar = getActionBar(); bar.addTab(bar.newTab().setText("Tab 1").setTabListener(this)); bar.addTab(bar.newTab().setText("Tab 2").setTabListener(this)); bar.addTab(bar.newTab().setText("Tab 3").setTabListener(this)); } @Override public void onClick(View v) { // TODO Auto-generated method stub final ActionBar bar = getActionBar(); int flags = 0; switch (v.getId()) { case R.id.btnNavi01: bar.setNavigationMode(bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_STANDARD ? ActionBar.NAVIGATION_MODE_TABS : ActionBar.NAVIGATION_MODE_STANDARD); return; } int change = bar.getDisplayOptions() ^ flags; bar.setDisplayOptions(change, flags); }
TabListener를 implements 받아서 처리 하면 아래와 같은 메서드를 Override하게 됩니다.
@Override public void onTabReselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub Log.d(TAG, "onTabReselected " + tab.getText()); } @Override public void onTabSelected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub Log.d(TAG, "onTabSelected " + tab.getText()); } @Override public void onTabUnselected(Tab tab, FragmentTransaction ft) { // TODO Auto-generated method stub Log.d(TAG, "onTabUnselected " + tab.getText()); }ActionBar에서 Tab을 추가하는 것을 간단하게 포스팅 하였습니다. 실제 App을 개발할때는 Fragment와 결합하여 사용하게 되며 ViewPager와 연계하여 Swipe기능을 사용하여 개발 할 수도 있습니다.
참조
댓글 없음:
댓글 쓰기