主界面的Fragment切换之使用FragmentTabHost配合切换Fragment

package com.heima.oschina;

import android.os.Bundle;
import android.support.v4.app.FragmentTabHost;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;

import butterknife.BindView;
import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {

    @BindView(R.id.fl)
    FrameLayout fl;
    @BindView(android.R.id.tabhost)
    FragmentTabHost tabhost;
    @BindView(R.id.iv_image)
    ImageView ivImage;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);

        //1.绑定tabhost和切换Fragment的布局
        tabhost.setup(this,getSupportFragmentManager(),R.id.fl);
        //去掉线
        tabhost.getTabWidget().setDividerDrawable(null);
        //2.创建tab按钮
        TabHost.TabSpec allTab = tabhost.newTabSpec("all");//创建综合界面的按钮
        allTab.setIndicator(getIndicateView(R.drawable.tab_icon_new,"综合"));

        TabHost.TabSpec tweetTab = tabhost.newTabSpec("tweet");//创建动弹界面的按钮
        tweetTab.setIndicator(getIndicateView(R.drawable.tab_icon_tweet,"动弹"));

        //加号
        TabHost.TabSpec addTab = tabhost.newTabSpec("addTab");//创建加号按钮,但点击此处不加载fragment
        View addView = getIndicateView(0, "");
        addView.setEnabled(false);//禁用点击事件
        addTab.setIndicator(addView);

        TabHost.TabSpec exploreTab = tabhost.newTabSpec("exploreTab");//创建动弹界面的按钮
        exploreTab.setIndicator(getIndicateView(R.drawable.tab_icon_explore,"发现"));

        TabHost.TabSpec meTab = tabhost.newTabSpec("meTab");//创建动弹界面的按钮
        meTab.setIndicator(getIndicateView(R.drawable.tab_icon_me,"我"));

        //3.添加Tab按钮以及对应的Fragment
        tabhost.addTab(allTab, AllFragment.class,null);
        tabhost.addTab(tweetTab, TweetFragment.class,null);
        tabhost.addTab(addTab, null,null);
        tabhost.addTab(exploreTab, ExploreFragment.class,null);
        tabhost.addTab(meTab, MeFragment.class,null);

        //给加号添加点击事件
        ivImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "弹对话框!", Toast.LENGTH_SHORT).show();
            }
        });

    }

    /**
     * 生成view
     * @param iconResId
     * @param title
     * @return
     */
    private View getIndicateView(int iconResId,String title){
        View view = View.inflate(this,R.layout.tab_indicator,null);
        ImageView  iv_image = (ImageView) view.findViewById(R.id.iv_image1);
        TextView tv_title = (TextView) view.findViewById(R.id.tv_title);

        iv_image.setBackgroundResource(iconResId);
        tv_title.setText(title);

        return view;
    }
}

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <FrameLayout
        android:id="@+id/fl"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <android.support.v4.app.FragmentTabHost
            android:id="@android:id/tabhost"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:background="@color/white" />
        <ImageView
            android:id="@+id/iv_image"
            android:layout_gravity="center"
            android:background="@drawable/btn_quickoption_selector"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </FrameLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:gravity="center"
    android:paddingTop="10dp"
    android:layout_height="60dp">
    <ImageView
        android:id="@+id/iv_image"
        android:layout_width="20dp"
        android:layout_height="20dp" />
    <TextView
        android:id="@+id/tv_title"
        android:layout_marginTop="3dp"
        android:textColor="@color/viewpage_selector_slide_title"
        android:textSize="14sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

注意:点击加号”+”时,不是切换fragment

综合
这里写图片描述

猜你喜欢

转载自blog.csdn.net/chenkaisq/article/details/53763930