最新的Support design tablayout 源码方法已改变

贴出封装好的底部Tab栏,再也不怕源码改变了

package com.xahtss.mplib.tab;

import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.View;
import com.xahtss.mplib.R;
import com.xahtss.mplib.base.BaseActivity;


/**
 * 主页
 * Created by zaric on 2016/4/26
 */
public abstract class MainActivity extends BaseActivity {

    private ViewPager mViewPager;
    private TabLayout mTabLayout;

    @Override
    protected int getRootView() {
        return R.layout.activity_main;
    }

    @Override
    protected void initView() {
        mViewPager = (ViewPager) findViewById(R.id.viewPager);
        mTabLayout = (TabLayout) findViewById(R.id.tabLayout);
    }

    @Override
    protected void initData() {
        TabVpAdapter tabVpAdapter = new TabVpAdapter(getSupportFragmentManager());
        initTabVpAdapter(tabVpAdapter);
        mViewPager.setAdapter(tabVpAdapter);
        mTabLayout.setupWithViewPager(mViewPager,false);
        for (int i = 0,size = mTabLayout.getTabCount(); i < size; i++) {
            TabLayout.Tab tab = mTabLayout.getTabAt(i);
            if (tab==null){
                return;
            }
            initTabIcon(tab,i);
        }
        mTabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                MainActivity.this.onTabSelected(tab);
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                MainActivity.this.onTabUnselected(tab);
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });
        mTabLayout.setBackgroundColor(getResources().getColor(getTabBackgroundColor()));
        mTabLayout.setTabTextColors(getResources().getColor(getUnselectedTextColor()),getResources().getColor(getSelectedTextColor()));
    }

    /**
     * 初始化Viewpager适配器
     */
    protected abstract void initTabVpAdapter(TabVpAdapter mTabVpAdapter);
    /**
     * 给tab添加图片
     */
    protected abstract void initTabIcon(TabLayout.Tab tab,int position);

    /**
     * 标签选中状态
     * @param tab 选中的Tab项
     */
    protected abstract void onTabSelected(TabLayout.Tab tab);

    /**
     * 标签不选中状态
     * @param tab 未选中的Tab项
     */
    protected abstract void onTabUnselected(TabLayout.Tab tab);

    /**
     * 得到TabLayout的背景色
     */
    protected int getTabBackgroundColor(){
        return R.color.colorPrimary;
    }
    /**
     * 得到TabLayout的字体未选中时的颜色
     */
    protected int getUnselectedTextColor(){
        return R.color.white;
    }
    /**
     * 得到TabLayout的字体选中时的颜色
     */
    protected int getSelectedTextColor(){
        return R.color.blue_light;
    }
    @Override
    public void onClick(View v) {

    }
}

这是布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white">

    <android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/tabLayout"/>
    <android.support.design.widget.TabLayout
        android:id="@+id/tabLayout"
        style="@style/TabLayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        />
</RelativeLayout>


这是基础父类

package com.xahtss.mplib.base;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.Toast;

import com.xahtss.mplib.R;
import com.xahtss.mplib.config.BasicConfig;
import com.xahtss.mplib.config.SystemConfig;
import com.xahtss.mplib.tool.LogTool;
import com.xahtss.mplib.tool.SharedTool;

/**
 * Activity基类 Created by zaric on 2016/3/17.
 */
public abstract class BaseActivity extends AppCompatActivity implements View.OnClickListener {
    protected Toolbar mToolbar;
    protected boolean isBack = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        super.onCreate(savedInstanceState);
        setContentView(getRootView());
        isBack = isBack();
        initToolbar();
        initView();
        initData();
        if (SystemConfig.getInstance().isSingle){
            initDebug();
        }
    }


    @Override
    protected void onResume() {
        super.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();

    }

    @Override
    protected void onStop() {
        super.onStop();
    }

    /**
     * 初始化标题栏
     */
    protected void initToolbar() {
        mToolbar = (Toolbar) findViewById(R.id.toolbar);
        if (mToolbar == null) {
            return;
        }
        setSupportActionBar(mToolbar);
        if (getSupportActionBar() == null) {
            return;
        }
        if (!isBack) {
            return;
        }
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        mToolbar.setNavigationIcon(R.mipmap.ic_left_arrow);
        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        int optionsMenu = getOptionsMenu();
        if (optionsMenu <= 0) {
            return super.onCreateOptionsMenu(menu);
        }
        getMenuInflater().inflate(optionsMenu, menu);
        onCreateOptionsView(menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();

        return onMenuClickListener(item, id) || super.onOptionsItemSelected(item);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode != RESULT_OK) {
            return;
        }
        LogTool.i("result Ok");
    }

    @Override
    public void finish() {
        super.finish();
    }

    /**
     * 加载根布局
     *
     * @return id
     */
    protected abstract int getRootView();

    /**
     * 初始化控件
     */
    protected abstract void initView();

    /**
     * 初始化数据
     */
    protected abstract void initData();
    /**
     * 调试模式
     */
    protected  void initDebug(){}

    /**
     * 设置按钮单击事件
     *
     * @param id 资源ID
     */
    protected void setOnClickListener(int id) {
        View view = findViewById(id);
        if (view == null) return;
        view.setOnClickListener(this);
    }

    /**
     * 是否显示向左返回箭头
     *
     * @return true 显示
     */
    protected boolean isBack() {
        return false;
    }

    /**
     * 加载右上角菜单
     *
     * @return id
     */
    protected abstract int getOptionsMenu();

    /**
     * 右上角菜单的单击事件
     *
     * @param item 标签
     * @param id   资源ID
     * @return true 执行单击事件
     */
    protected boolean onMenuClickListener(MenuItem item, int id) {
        return false;
    }


    /**
     * 创建标题栏视图
     */
    protected void onCreateOptionsView(Menu menu) {

    }

    /**
     * 短Toast
     *
     * @param msg 字符串消息内容
     */
    protected void toastShort(String msg) {
        Toast toast = Toast.makeText(this, msg, Toast.LENGTH_SHORT);
        toast.setGravity(Gravity.CENTER, 0, 0);
        toast.show();
    }

    /**
     * 短Toast
     *
     * @param msg id
     */
    protected void toastShort(int msg) {
        toastShort(getString(msg));
    }

    /**
     * Activity 跳转
     *
     * @param cls activity类
     */
    protected void gotoActivity(Class<?> cls, boolean isFinish) {
        Intent intent = new Intent(this, cls);
        putDataToNext(intent);
        startActivity(intent);
        if (isFinish) {
            finish();
        }
    }

    /**
     * Activity 跳转
     *
     * @param cls         activity类
     * @param requestCode 向下code
     */
    protected void gotoActivityForResult(Class<?> cls, int requestCode, boolean isFinish) {
        Intent intent = new Intent(this, cls);
        putDataToNext(intent);
        startActivityForResult(intent, requestCode);
        if (isFinish) {
            finish();
        }
    }

    /**
     * 向下一页传递数据
     *
     * @param intent 组件对象
     */
    protected void putDataToNext(Intent intent) {
    }

}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生富有

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值