贴出封装好的底部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) { } }