안드로이드 탭

http://itknowhow.tistory.com/17


안드로이드 Tab의 모든것

 
1. CurrentTab이 변경이 되면 Intent가 Refresh 되도록 설정하는 방법

  • Intent에 아래와 같이 addFlags를 설정하면 TabChange때 새로 Activity를 생성한다.

  • TabHost.TabSpec spec = tabHost.newTabSpec("tab1").setIndicator(tabs[0]).setContent(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));

2. TabBar 꾸미는 방법

  • Tab Source (버튼 디자인)

 

public class TabView extends LinearLayout
{

 ImageView image;
 TextView text;

 public TabView(Context context, int drawable, int label) 
 {

  super(context);
  // Tab Image Setting
  image = new ImageView(context);
  image.setImageResource(drawable);
  
  // Tab Label Setting
  text = new TextView(context);
  text.setText(getResources().getString(label));
  text.setGravity(0x01); /* Center */
  
  setOrientation(LinearLayout.VERTICAL);
  addView(image);
  addView(text);
  this.setBackgroundResource(R.drawable.tab_selecter);

 }

 
 public ImageView getImageView()
 {

  return image;

 }
 
 public TextView getTextView()
 {

  return text;

 }

}


  • TabBar에 Tab 넣기

 

tabHost.newTabSpec("tab1").setIndicator(new TabView(this, R.drawable.tab1, R.string.tab1)).setContent(intent);
커스텀한 뷰 객체에 이미지와 텍스트를 설정하고 tabHost에 넣는다. 

  • 현재 Tab의 위치가 변경되었을 때 호출되는 이벤트 함수

 

tabHost.setOnTabChangedListener(new OnTabChangeListener(){ ... }

  • 현재 Tab의 안에서 여러개의 Activity를 Navigation 처리하기

 

public class NavigationActivity extends Activity
{
          // 앞으로 가기 처리
          public void goNextHistory(String id, Intent intent)
          { 
                   NavigationGroupActivity parent = ((NavigationGroupActivity) getParent());
                   View view = parent.group.getLocalActivityManager()
                   .startActivity(id, intent).getDecorView();
                   parent.group.replaceView(view);
          }

          // 뒤로 가기 처리
          @Override
          public void onBackPressed()
          {
                   NavigationGroupActivity parent = ((NavigationGroupActivity) getParent());
                   parent.back();
          } 
}

public class NavigationGroupActivity extends ActivityGroup
{
           ArrayList<View> history; // View들을 관리하기 위한 List
           public NavigationGroupActivity group; // Activity들이 접근하기 위한 Group
           public int tabIndex;
  
           @Override
           protected void onCreate(Bundle savedInstanceState)
           {
                      super.onCreate(savedInstanceState);
                      history = new ArrayList<View>();
                      group = this;
           }

           // 동일한 Level의 Activity를 다른 Activity로 변경하는 경우
           public void changeView(View v)
           { 
                    history.remove(history.size() - 1);
                    history.add(v);
                    setContentView(v);
           }

           // 새로운 Level의 Activity를 추가하는 경우
           public void replaceView(View v)
           { 
                    history.add(v);
                    setContentView(v);
           }

           public void tabBack()
           {
                     if (history.size() > 1)
                     {
                              back();
                     }
           }
 
           // Back Key가 눌려졌을 경우에 대한 처리
           public void back()
           { 
                     if (history.size() > 1)
                     {
                              history.remove(history.size()-1);
                              setContentView(history.get(history.size()-1));
                              setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
                              ContentsControll.tabRotation = 0;
                     } 
                     else
                     {
                              finish(); // 최상위 Level의 경우 TabActvity를 종료해야 한다.
                     }
           }

           // Back Key에 대한 Event Handler
          @Override
          public void onBackPressed()
          { 
                    group.back();
                    return;
          }
}
 





http://vissel.tistory.com/91



기본 소스를 보면 2개의 탭이 있는데요 화면 으로 누르지 않고 화면 안에서 소스로 이동할수 있거나 아니면

항목을 터치 이벤트에서 탭누르지않고 이동하려면.. 

 final TabHost tabHost = getTabHost();

       
        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("메인")
    .setContent(new Intent(this, 아아.class)));

 

  tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("환경설정")
    .setContent(
      new Intent(this, 아아.class)
        .addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)));
  
  
         tabHost.setCurrentTab(1); // 바로 이놈이 탭 을 이동 할 수 있는 비밀.

응용하자면 소스에서 처음 설정이    tabHost.setCurrentTab(0);으로 해놓으면 기본 셋팅이고 

버튼 이벤트에 푸쉬에다가    tabHost.setCurrentTab(1); 로 넣어주면 탭이 이동합니다 참쉽죠잉 . ㅋ 









http://androidhuman.tistory.com/151

http://blog.naver.com/PostView.nhn?blogId=liar1938&logNo=30171663892

http://blog.daum.net/dayhyub/67