• Android笔记之FragmentTabHost实现选项卡


    FragmentTabHost

    API:http://developer.android.com/reference/android/support/v4/app/FragmentTabHost.html

    1、main.xml文件

    <?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" />
    
        <!-- tabhost装载5个tab的容器 -->
        <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、FragmentActivity中使用fragmenttabhost

    (1)TabSpec的实例化:TabSpec tabSpec = mTabHost.newTabSpec(String tag).setIndicator(.....);

    • setIndicator(View view);   //Specify a view as the tab indicator.
    setIndicator(getTabItemView())
    private View getTabItemView(int index){
            View view = layoutInflater.inflate(R.layout.tab_item_view, null);
        
            ImageView imageView = (ImageView) view.findViewById(R.id.imageview);
            imageView.setImageResource(R.drawable.tab_home_btn);
            
            TextView textView = (TextView) view.findViewById(R.id.textview);        
            textView.setText("首页");
        
            return view;
        }
    • setIndicator(CharSequence label, Drawable icon)  //Specify a label and icon as the tab indicator. label即为选项卡的显示的文本
    setIndicator("Android",getResources().getDrawable(R.drawable.icon_home_nor));       
    • setIndicator( CharSequence label)  //Specify a label as the tab indicator.
    setIndicator("设置")

    主要代码:

    import android.os.Bundle;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentTabHost;
    
    /**
     * This demonstrates how you can implement switching between the tabs of a
     * TabHost through fragments, using FragmentTabHost.
     */
    public class MainActivity extends FragmentActivity {
        private FragmentTabHost mTabHost;
    @Override
    protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); mTabHost.addTab(mTabHost.newTabSpec("首页").setIndicator("Simple"), fragment_1.class, null); mTabHost.addTab(mTabHost.newTabSpec("分类") .setIndicator("Contacts"), fragment_1.class, null); mTabHost.addTab(mTabHost.newTabSpec("排行").setIndicator("Custom"), fragment_1.class, null); mTabHost.addTab(mTabHost.newTabSpec("热门") .setIndicator("Throttle"), fragment_1.class, null); mTabHost.addTab(mTabHost.newTabSpec("设置") .setIndicator("Throttle"), fragment_1.class, null); } }
    fragment_X.class的代码
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    public class fragment_1 extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    
            View v = inflater.inflate(R.layout.fragment_1, container, false);
            return v;
        }
    }

    3、fragment下使用fragmentabhost

     (1)fragment_1本身不需要布局文件

    (2)选项卡默认在顶部

    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentTabHost;public class fragment_1 extends Fragment {
        private FragmentTabHost mTabHost;
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            mTabHost = new FragmentTabHost(getActivity());
            mTabHost.setup(getActivity(), getChildFragmentManager(), R.layout.fragment1/59);
    
            mTabHost.addTab(mTabHost.newTabSpec("simple").setIndicator("Simple"),
                    subfragment_1.class, null);
            mTabHost.addTab(mTabHost.newTabSpec("contacts").setIndicator("Contacts"),
                    subfragment_1.class, null);
            mTabHost.addTab(mTabHost.newTabSpec("custom").setIndicator("Custom"),
                    subfragment_1.class, null);
            return mTabHost;
        }
    
        @Override
        public void onDestroyView() {
            super.onDestroyView();
            mTabHost = null;
        }
    }

    4、其他函数

    mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.selector_tab_background);

    Done!

  • 相关阅读:
    压缩脚本文件
    通用的访问非公有字段(Field)和属性组件
    调用加了SSL签名的WebService
    [译作]Class in Jscript Part I
    在UpdatePanel中使用Menu出错的解决方案
    到处遍是ASP.NET AJAX Released
    也谈约定胜于配置
    如何使用Orcas的CSS功能
    Ext js 2.0 Overview(3) 组件生命周期
    一些非常有用的备忘录文档
  • 原文地址:https://www.cnblogs.com/xingyyy/p/3322011.html
Copyright © 2020-2023  润新知