先上效果图:
1.导入Design包(所有Design下的控件,第一步都是倒包)
compile 'com.android.support:design:25.0.0'
2.先看第一种,TableLayou + ViewPager:
2.1.Activity:
public class OneActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
private List<String> list;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.one);
initView();
list = new ArrayList<>();
for (int i = 0; i < 6; i++) {
list.add((i + 1) + "");
}
//viewpager设置adapter
viewPager.setAdapter(new MyAdapter(getSupportFragmentManager(), list));
//tablayout关联viewpager
tabLayout.setupWithViewPager(viewPager);
setIndicator(tabLayout, 20, 20); //这里为了明显,所以设置的计较大20
}
private void initView() {
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
viewPager = (ViewPager) findViewById(R.id.viewPager);
}
/**
* 设置TableView下划线的宽度
* @param tabs tablaout
* @param leftDip 距离左边
* @param rightDip 距离右边
*/
public void setIndicator(TabLayout tabs,int leftDip,int rightDip){
Class<?> tabLayout = tabs.getClass();
Field tabStrip = null;
try {
tabStrip = tabLayout.getDeclaredField("mTabStrip");
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
tabStrip.setAccessible(true);
LinearLayout llTab = null;
try {
llTab = (LinearLayout) tabStrip.get(tabs);
} catch (IllegalAccessException e) {
e.printStackTrace();
}
int left = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, leftDip, Resources.getSystem().getDisplayMetrics());
int right = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, rightDip, Resources.getSystem().getDisplayMetrics());
for (int i = 0; i < llTab.getChildCount(); i++) {
View child = llTab.getChildAt(i);
child.setPadding(0, 0, 0, 0);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 1);
params.leftMargin = left;
params.rightMargin = right;
child.setLayoutParams(params);
child.invalidate();
}
}
//跳转Activity
public static void startActivity(Context context) {
Intent intent = new Intent(context, OneActivity.class);
context.startActivity(intent);
}
}
2.2,用到的Adapter和Fragment
Fragment:
public class BlankFragment extends Fragment {
public BlankFragment() {
// Required empty public constructor
}
public static BlankFragment newInstance(String text) {
Bundle args = new Bundle();
args.putString("text",text);
BlankFragment fragment = new BlankFragment();
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_blank, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView text = (TextView) view.findViewById(R.id.fg_text);
String str = getArguments().getString("text");
text.setText(str);
}
}
Adapter:
public class MyAdapter extends FragmentPagerAdapter {
private List<String> list;
public MyAdapter(FragmentManager fm) {
super(fm);
}
public MyAdapter(FragmentManager fm, List<String> list) {
super(fm);
this.list = list;
}
@Override
public Fragment getItem(int position) {
return BlankFragment.newInstance(list.get(position));
}
@Override
public int getCount() {
return list.size();
}
@Override
public CharSequence getPageTitle(int position) {
return list.get(position);
}
}
3.接下来就是TabLayout + ListView
Activity:
public class TwoActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener {
private TabLayout tabLayout;
private ListView listView;
private List<String> list;
private Adapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.two);
initData();
initView();
tabLayout.addTab(tabLayout.newTab().setText("已支付"));
tabLayout.addTab(tabLayout.newTab().setText("未支付"));
tabLayout.setOnTabSelectedListener(this);
}
private void initData() {
list = new ArrayList<>();
for (int i = 0; i < 50; i++) {
list.add("我是第" + (i + 1) + "项");
}
}
private void initView() {
tabLayout = (TabLayout) findViewById(R.id.tabLayout2);
listView = (ListView) findViewById(R.id.listView);
adapter = new Adapter(this, list);
listView.setAdapter(adapter);
//鸿洋的万能适配器
// listView.setAdapter(new CommonAdapter<String>(this, R.layout.item, list) {
// @Override
// protected void convert(ViewHolder viewHolder, String item, int position) {
// viewHolder.setText(R.id.item_Text, list.get(position));
// }
// });
}
//跳转Activity
public static void startActivity(Context context) {
Intent intent = new Intent(context, TwoActivity.class);
context.startActivity(intent);
}
//tableLayout的点击事件
@Override
public void onTabSelected(TabLayout.Tab tab) {
Toast.makeText(this, "你点击了" + tab.getText(), Toast.LENGTH_SHORT).show();
Log.e("-------", tab.getPosition() + "---");
list.clear();
if (tab.getPosition() == 0) {
for (int i = 0; i < 50; i++) {
list.add("我是第" + (i + 1) + "项");
}
} else if (tab.getPosition() == 1) {
for (int i = 0; i < 50; i++) {
list.add("哈哈哈哈哈" + (i + 1));
}
}
adapter.notifyDataSetChanged();
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
}
Design系列一:TableLayout,接下来会持续更新!