android 아래쪽 옵션 (2) FragmentTabHost + Fragment 구현

앞의 블 로그 에서 언급 한 바 와 같이 TabHost 를 사용 하여 아래쪽 옵션 표시 줄 을 만 듭 니 다. 하지만 TabHost 는 시간 이 지나 서 링크 를 열 려 면 누 르 십시오.
TabHost 는 아래쪽 옵션 표시 줄 을 Activity 로 전환 하고 Fragment TabHost 는 Fragment 로 전환 합 니 다. 이에 비해 더욱 유연 하고 성능 이 좋 습 니 다.
Fragment TabHost + Fragment 는 서로 다른 옵션 사이 에서 빠르게 전환 할 수 있 을 뿐만 아니 라 다른 옵션 이전의 상태 도 저장 할 수 있 습 니 다.
1. Fragment TabHost 의 Xml 파일 정 의 는 다음 과 같 습 니 다.
주의해 야 할 것 은: Fragment TabHost 의 id 는 시스템 의 "@ android: id / tabhost" 로 지정 해 야 합 니 다.
FragmentTabHost 위의 FrameLayout 레이아웃 은 Fragment 에 대응 하 는 용 기 를 채 우 는 데 사 용 됩 니 다.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <FrameLayout
        android:id="@+id/realtabcontent"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" />

    <android.support.v4.app.FragmentTabHost
        android:id="@android:id/tabhost"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_weight="0" />            
    </android.support.v4.app.FragmentTabHost>
</LinearLayout>

2. 자바 논리
package com.example.fragmenttabhost;

import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;

public class MainActivity extends FragmentActivity {
	private LayoutInflater inflater;
	private FragmentTabHost mTabHost;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		inflater=LayoutInflater.from(this);

		mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
		mTabHost.setup(getApplicationContext(), getSupportFragmentManager(),
				R.id.realtabcontent);

		//   tab     
		View indicator = getIndicatorView("     ", R.drawable.tab_main_nav_me);
		TabSpec firstSpec = mTabHost.newTabSpec("myContact").setIndicator(
				indicator);
		mTabHost.addTab(firstSpec, FirstFragment.class, null);

		//   tab     
		View indicator2 = getIndicatorView("    ", R.drawable.tab_main_nav_book);
		TabSpec secondSpec = mTabHost.newTabSpec("myRead").setIndicator(
				indicator2);
		mTabHost.addTab(secondSpec, SecondFragment.class, null);
	}

	/**
	 *        
	 */
	private View getIndicatorView(String name, int iconid) {
		View view = inflater.inflate(R.layout.nav_tab, null);
		ImageView ivicon = (ImageView) view.findViewById(R.id.ivIcon);
		TextView tvtitle = (TextView) view.findViewById(R.id.tvTitle);
		ivicon.setImageResource(iconid);
		tvtitle.setText(name);
		return view;
	}
}

원본 다운로드 주소http://download.csdn.net/detail/lang791534167/6837533

좋은 웹페이지 즐겨찾기