Skip to content

Commit

Permalink
完成动态增删Tab的演示
Browse files Browse the repository at this point in the history
  • Loading branch information
hackware1993 committed Sep 13, 2016
1 parent 9704e64 commit 045b73c
Show file tree
Hide file tree
Showing 7 changed files with 115 additions and 28 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,94 @@
package net.lucode.hackware.magicindicatordemo.example;

import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;

import net.lucode.hackware.magicindicator.MagicIndicator;
import net.lucode.hackware.magicindicator.ViewPagerHelper;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ClipPagerTitleView;
import net.lucode.hackware.magicindicatordemo.R;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;

public class DynamicTabExampleActivity extends AppCompatActivity {
private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "HONEYCOMB", "ICE_CREAM_SANDWICH", "JELLY_BEAN", "KITKAT", "LOLLIPOP", "M", "NOUGAT"};
private List<String> mDataList = new ArrayList<String>(Arrays.asList(CHANNELS));
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);

private ViewPager mViewPager;
private MagicIndicator mMagicIndicator;
private CommonNavigator mCommonNavigator;

private Toast mToast;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_dynamic_tab_example_layout);

mViewPager = (ViewPager) findViewById(R.id.view_pager);
mViewPager.setAdapter(mExamplePagerAdapter);

mMagicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator1);
mMagicIndicator.setBackgroundColor(Color.parseColor("#d43d3d"));
mCommonNavigator = new CommonNavigator(this);
mCommonNavigator.setSkimOver(true);
mCommonNavigator.setAdapter(new CommonNavigatorAdapter() {

@Override
public int getCount() {
return mDataList.size();
}

@Override
public IPagerTitleView getTitleView(Context context, final int index) {
ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);
clipPagerTitleView.setText(mDataList.get(index));
clipPagerTitleView.setTextColor(Color.parseColor("#f2c4c4"));
clipPagerTitleView.setClipColor(Color.WHITE);
clipPagerTitleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mViewPager.setCurrentItem(index);
}
});
return clipPagerTitleView;
}

@Override
public IPagerIndicator getIndicator(Context context) {
return null;
}
});
mMagicIndicator.setNavigator(mCommonNavigator);
ViewPagerHelper.bind(mMagicIndicator, mViewPager);

mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
}

public void randomPage(View view) {
mDataList.clear();
int total = new Random().nextInt(CHANNELS.length);
for (int i = 0; i <= total; i++) {
mDataList.add(CHANNELS[i]);
}

mCommonNavigator.notifyDataSetChanged(); // must call firstly
mExamplePagerAdapter.notifyDataSetChanged();

mToast.setText("" + mDataList.size() + " page");
mToast.show();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -29,12 +29,12 @@
import java.util.List;

public class FixedTabExampleActivity extends AppCompatActivity {
private ViewPager mViewPager;

private String[] channels = new String[]{"KITKAT", "NOUGAT", "DONUT"};
private List<String> mDataList = Arrays.asList(channels);
private static final String[] CHANNELS = new String[]{"KITKAT", "NOUGAT", "DONUT"};
private List<String> mDataList = Arrays.asList(CHANNELS);
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);

private ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import java.util.List;

public class FragmentContainerExampleActivity extends AppCompatActivity {
private String[] channels = new String[]{"KITKAT", "NOUGAT", "DONUT"};
private static final String[] CHANNELS = new String[]{"KITKAT", "NOUGAT", "DONUT"};
private List<Fragment> mFragments = new ArrayList<Fragment>();
private FragmentContainerHelper mFragmentContainerHelper = new FragmentContainerHelper();

Expand Down Expand Up @@ -63,10 +63,10 @@ private void switchPages(int index) {
}

private void initFragments() {
for (int i = 0; i < channels.length; i++) {
for (int i = 0; i < CHANNELS.length; i++) {
TestFragment testFragment = new TestFragment();
Bundle bundle = new Bundle();
bundle.putString(TestFragment.EXTRA_TEXT, channels[i]);
bundle.putString(TestFragment.EXTRA_TEXT, CHANNELS[i]);
testFragment.setArguments(bundle);
mFragments.add(testFragment);
}
Expand All @@ -78,13 +78,13 @@ private void initMagicIndicator1() {
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
@Override
public int getCount() {
return channels.length;
return CHANNELS.length;
}

@Override
public IPagerTitleView getTitleView(Context context, final int index) {
ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);
clipPagerTitleView.setText(channels[index]);
clipPagerTitleView.setText(CHANNELS[index]);
clipPagerTitleView.setTextColor(Color.parseColor("#e94220"));
clipPagerTitleView.setClipColor(Color.WHITE);
clipPagerTitleView.setOnClickListener(new View.OnClickListener() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,12 +22,12 @@
import java.util.List;

public class NoTabOnlyIndicatorExampleActivity extends AppCompatActivity {
private ViewPager mViewPager;

private String[] channels = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "NOUGAT", "DONUT"};
private List<String> mDataList = Arrays.asList(channels);
private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "NOUGAT", "DONUT"};
private List<String> mDataList = Arrays.asList(CHANNELS);
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);

private ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@
import java.util.List;

public class ScrollableTabExampleActivity extends AppCompatActivity {
private ViewPager mViewPager;

private String[] channels = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "HONEYCOMB", "ICE_CREAM_SANDWICH", "JELLY_BEAN", "KITKAT", "LOLLIPOP", "M", "NOUGAT"};
private List<String> mDataList = Arrays.asList(channels);
private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "HONEYCOMB", "ICE_CREAM_SANDWICH", "JELLY_BEAN", "KITKAT", "LOLLIPOP", "M", "NOUGAT"};
private List<String> mDataList = Arrays.asList(CHANNELS);
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);

private ViewPager mViewPager;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Expand Down
29 changes: 18 additions & 11 deletions app/src/main/res/layout/activity_dynamic_tab_example_layout.xml
Original file line number Diff line number Diff line change
@@ -1,19 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_dynamic_tab_example"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context="net.lucode.hackware.magicindicatordemo.example.DynamicTabExampleActivity">

<TextView
android:layout_width="wrap_content"
<net.lucode.hackware.magicindicator.MagicIndicator
android:id="@+id/magic_indicator1"
android:layout_width="match_parent"
android:layout_height="@dimen/common_navigator_height" />

<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="coming soon!" />
android:onClick="randomPage"
android:text="@string/random_page" />

</RelativeLayout>
</LinearLayout>
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@
<string name="work_with_fragment_container">work with fragment container</string>
<string name="tab_with_badge_view">tab with badge view</string>
<string name="custom_navigator">custom navigator</string>
<string name="random_page">random page</string>
</resources>

0 comments on commit 045b73c

Please sign in to comment.