티스토리 뷰

안드로이드에서 제공되는 탭은 사용하기가 넘 불편하다...어쩔 수 없이 커스텁 탭을 만들어 사용해야 겠다.

How To

  • 커스텀 뷰 레이아웃 XML 정의하기
  • 커스텀 뷰 구현하기
  • 액티비티 레이아웃 XML 정의하기
  • custom tab Activity 만들기
  • AndroidManifest.xml 에 Activity 등록
* * *

■ 커스텀 뷰 레이아웃 XML 정의하기

하나의 리스트와 네개의 탭으로 이루어진 화면을 구성한다.



    
  				
			    

	
		
			
		
		
	

■ 커스텀 뷰 구현하기

- 탭을 클릭할 때 해당되는 데이터를 가져온다. 

View.OnClickListener 구현

package com.misun.samples.views;public class CustomTabs extends LinearLayout implements View.OnClickListener{
		private static final String TAG ="CustomTabs";
	Context context ;
	View view;	ListView list ;
	TextView[] tabs ;
	ArrayAdapter adapter ;
	ArrayList arGeneral ;
	public CustomTabs(Context context) {
		super(context);
		init(context);
	}
	public CustomTabs(Context context, AttributeSet attrs) {
		super(context, attrs);
		init(context);
	}
		private void init(Context context){
		Log.i(TAG, "init");
		this.context = context ;
		tabs = new TextView[4];
		LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		view=layoutInflater.inflate(R.layout.w_customtabs,this);
   		tabs[0] = (TextView)view.findViewById(R.id.tab_01);
		tabs[1] = (TextView)view.findViewById(R.id.tab_02);
		tabs[2] = (TextView)view.findViewById(R.id.tab_03);
		tabs[3] = (TextView)view.findViewById(R.id.tab_04);
                for(TextView tab : tabs){
			tab.setOnClickListener(this);
		}		arGeneral = new ArrayList();
		adapter = new ArrayAdapter(context, android.R.layout.simple_list_item_1, arGeneral);
    	    	list = (ListView)findViewById(R.id.tab_list);
		list.setAdapter(adapter);
		changeBackgound(0);
		setData(0);	}
	public void onClick(View v) {
		switch(v.getId()){		case R.id.tab_01 :
			changeBackgound(0);
			break;		case R.id.tab_02 :
					......			}
					}
			private void changeBackgound(int idx){		......	}
		/**	 * ListView 에 Data넣기 	 * @param idx	 */
	private void setData(int idx){
    	arGeneral.clear();
		switch(idx){
		case 0 :
	    	arGeneral.add("이씨");
			break;
		case 1:	        ...........		}
    	    	adapter.notifyDataSetChanged();
    		}}

■ 액티비티 레이아웃 XML 정의하기


	


■ custom tab Activity 만들기

■ AndroidManifest.xml 에 Activity 등록

댓글