package yifeiyuan.practice.practicedemos.materialsupport;
import android.os.Bundle;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import java.util.ArrayList;
import java.util.List;
import butterknife.InjectView;
import yifeiyuan.practice.practicedemos.R;
import yifeiyuan.practice.practicedemos.base.BaseActivity;
public class MaterialActivity extends BaseActivity {
@InjectView(R.id.toolbar)
Toolbar mToolbar;
@InjectView(R.id.tablayout)
TabLayout mTablayout;
@InjectView(R.id.app_bar)
AppBarLayout mAppBar;
@InjectView(R.id.view_pager)
ViewPager mViewPager;
@InjectView(R.id.fab)
FloatingActionButton mFab;
@InjectView(R.id.root)
CoordinatorLayout mRoot;
private TabAdapter mAdapter;
@Override
protected int getLayoutId() {
return R.layout.material_support;
}
@Override
protected void init(Bundle savedInstanceState) {
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
mFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(mRoot, "Hello Material design !~", Snackbar.LENGTH_SHORT).show();
}
});
setupViewPager();
setupTab();
}
private void setupViewPager() {
mAdapter = new TabAdapter(getSupportFragmentManager());
mAdapter.addFragment(new ListFragment(), "List");
mAdapter.addFragment(new GridFragment(), "Grid");
mAdapter.addFragment(new StaggeredGridFragment(), "StaggeredGrid");
mViewPager.setAdapter(mAdapter);
}
private void setupTab() {
mTablayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
Log.d(TAG, "onTabSelected() called with " + "tab = [" + tab + "]");
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
Log.d(TAG, "onTabUnselected() called with " + "tab = [" + tab + "]");
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
Log.d(TAG, "onTabReselected() called with " + "tab = [" + tab + "]");
}
});
// mTablayout.setTabMode(TabLayout.MODE_FIXED);//默认 平均分 Notice 但是字多了会多行显示 很坑...
mTablayout.setTabMode(TabLayout.MODE_SCROLLABLE);//Notice 每个tab的宽度都是wrap_content,大小不一致 不会出现多行显示
//Notice 如果与viewpager 合用,那么这里设置的text将无效
mTablayout.addTab(mTablayout.newTab().setText("new tab 1").setIcon(R.mipmap.blue));
mTablayout.addTab(mTablayout.newTab().setText("new tab 2"), true);//设置默认选中2
mTablayout.addTab(mTablayout.newTab().setText("new tab 3"));
mTablayout.setupWithViewPager(mViewPager);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_material, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.menu_home:
return true;
case android.R.id.home:
finish();
return true;
}
return super.onOptionsItemSelected(item);
}
private class TabAdapter extends FragmentPagerAdapter {
private final List<Fragment> mFragments = new ArrayList<>();
private final List<String> mFragmentTitles = new ArrayList<>();
public void addFragment(Fragment fragment, String title) {
mFragments.add(fragment);
mFragmentTitles.add(title);
}
public TabAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
/**
* 这个决定了 tablayout 的显示的标题
* @param position
* @return
*/
@Override
public CharSequence getPageTitle(int position) {
return mFragmentTitles.get(position);
}
}
}