Skip to content

Commit 045b73c

Browse files
committed
完成动态增删Tab的演示
1 parent 9704e64 commit 045b73c

File tree

7 files changed

+115
-28
lines changed

7 files changed

+115
-28
lines changed
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,94 @@
11
package net.lucode.hackware.magicindicatordemo.example;
22

3+
import android.content.Context;
4+
import android.graphics.Color;
35
import android.os.Bundle;
6+
import android.support.v4.view.ViewPager;
47
import android.support.v7.app.AppCompatActivity;
8+
import android.view.View;
9+
import android.widget.Toast;
510

11+
import net.lucode.hackware.magicindicator.MagicIndicator;
12+
import net.lucode.hackware.magicindicator.ViewPagerHelper;
13+
import net.lucode.hackware.magicindicator.buildins.commonnavigator.CommonNavigator;
14+
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.CommonNavigatorAdapter;
15+
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerIndicator;
16+
import net.lucode.hackware.magicindicator.buildins.commonnavigator.abs.IPagerTitleView;
17+
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.ClipPagerTitleView;
618
import net.lucode.hackware.magicindicatordemo.R;
719

20+
import java.util.ArrayList;
21+
import java.util.Arrays;
22+
import java.util.List;
23+
import java.util.Random;
24+
825
public class DynamicTabExampleActivity extends AppCompatActivity {
26+
private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "HONEYCOMB", "ICE_CREAM_SANDWICH", "JELLY_BEAN", "KITKAT", "LOLLIPOP", "M", "NOUGAT"};
27+
private List<String> mDataList = new ArrayList<String>(Arrays.asList(CHANNELS));
28+
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);
29+
30+
private ViewPager mViewPager;
31+
private MagicIndicator mMagicIndicator;
32+
private CommonNavigator mCommonNavigator;
33+
34+
private Toast mToast;
935

1036
@Override
1137
protected void onCreate(Bundle savedInstanceState) {
1238
super.onCreate(savedInstanceState);
1339
setContentView(R.layout.activity_dynamic_tab_example_layout);
40+
41+
mViewPager = (ViewPager) findViewById(R.id.view_pager);
42+
mViewPager.setAdapter(mExamplePagerAdapter);
43+
44+
mMagicIndicator = (MagicIndicator) findViewById(R.id.magic_indicator1);
45+
mMagicIndicator.setBackgroundColor(Color.parseColor("#d43d3d"));
46+
mCommonNavigator = new CommonNavigator(this);
47+
mCommonNavigator.setSkimOver(true);
48+
mCommonNavigator.setAdapter(new CommonNavigatorAdapter() {
49+
50+
@Override
51+
public int getCount() {
52+
return mDataList.size();
53+
}
54+
55+
@Override
56+
public IPagerTitleView getTitleView(Context context, final int index) {
57+
ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);
58+
clipPagerTitleView.setText(mDataList.get(index));
59+
clipPagerTitleView.setTextColor(Color.parseColor("#f2c4c4"));
60+
clipPagerTitleView.setClipColor(Color.WHITE);
61+
clipPagerTitleView.setOnClickListener(new View.OnClickListener() {
62+
@Override
63+
public void onClick(View v) {
64+
mViewPager.setCurrentItem(index);
65+
}
66+
});
67+
return clipPagerTitleView;
68+
}
69+
70+
@Override
71+
public IPagerIndicator getIndicator(Context context) {
72+
return null;
73+
}
74+
});
75+
mMagicIndicator.setNavigator(mCommonNavigator);
76+
ViewPagerHelper.bind(mMagicIndicator, mViewPager);
77+
78+
mToast = Toast.makeText(this, "", Toast.LENGTH_SHORT);
79+
}
80+
81+
public void randomPage(View view) {
82+
mDataList.clear();
83+
int total = new Random().nextInt(CHANNELS.length);
84+
for (int i = 0; i <= total; i++) {
85+
mDataList.add(CHANNELS[i]);
86+
}
87+
88+
mCommonNavigator.notifyDataSetChanged(); // must call firstly
89+
mExamplePagerAdapter.notifyDataSetChanged();
90+
91+
mToast.setText("" + mDataList.size() + " page");
92+
mToast.show();
1493
}
1594
}

app/src/main/java/net/lucode/hackware/magicindicatordemo/example/FixedTabExampleActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,12 @@
2929
import java.util.List;
3030

3131
public class FixedTabExampleActivity extends AppCompatActivity {
32-
private ViewPager mViewPager;
33-
34-
private String[] channels = new String[]{"KITKAT", "NOUGAT", "DONUT"};
35-
private List<String> mDataList = Arrays.asList(channels);
32+
private static final String[] CHANNELS = new String[]{"KITKAT", "NOUGAT", "DONUT"};
33+
private List<String> mDataList = Arrays.asList(CHANNELS);
3634
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);
3735

36+
private ViewPager mViewPager;
37+
3838
@Override
3939
protected void onCreate(Bundle savedInstanceState) {
4040
super.onCreate(savedInstanceState);

app/src/main/java/net/lucode/hackware/magicindicatordemo/example/FragmentContainerExampleActivity.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import java.util.List;
2525

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

@@ -63,10 +63,10 @@ private void switchPages(int index) {
6363
}
6464

6565
private void initFragments() {
66-
for (int i = 0; i < channels.length; i++) {
66+
for (int i = 0; i < CHANNELS.length; i++) {
6767
TestFragment testFragment = new TestFragment();
6868
Bundle bundle = new Bundle();
69-
bundle.putString(TestFragment.EXTRA_TEXT, channels[i]);
69+
bundle.putString(TestFragment.EXTRA_TEXT, CHANNELS[i]);
7070
testFragment.setArguments(bundle);
7171
mFragments.add(testFragment);
7272
}
@@ -78,13 +78,13 @@ private void initMagicIndicator1() {
7878
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
7979
@Override
8080
public int getCount() {
81-
return channels.length;
81+
return CHANNELS.length;
8282
}
8383

8484
@Override
8585
public IPagerTitleView getTitleView(Context context, final int index) {
8686
ClipPagerTitleView clipPagerTitleView = new ClipPagerTitleView(context);
87-
clipPagerTitleView.setText(channels[index]);
87+
clipPagerTitleView.setText(CHANNELS[index]);
8888
clipPagerTitleView.setTextColor(Color.parseColor("#e94220"));
8989
clipPagerTitleView.setClipColor(Color.WHITE);
9090
clipPagerTitleView.setOnClickListener(new View.OnClickListener() {

app/src/main/java/net/lucode/hackware/magicindicatordemo/example/NoTabOnlyIndicatorExampleActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
import java.util.List;
2323

2424
public class NoTabOnlyIndicatorExampleActivity extends AppCompatActivity {
25-
private ViewPager mViewPager;
26-
27-
private String[] channels = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "NOUGAT", "DONUT"};
28-
private List<String> mDataList = Arrays.asList(channels);
25+
private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "NOUGAT", "DONUT"};
26+
private List<String> mDataList = Arrays.asList(CHANNELS);
2927
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);
3028

29+
private ViewPager mViewPager;
30+
3131
@Override
3232
protected void onCreate(Bundle savedInstanceState) {
3333
super.onCreate(savedInstanceState);

app/src/main/java/net/lucode/hackware/magicindicatordemo/example/ScrollableTabExampleActivity.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,12 @@
3131
import java.util.List;
3232

3333
public class ScrollableTabExampleActivity extends AppCompatActivity {
34-
private ViewPager mViewPager;
35-
36-
private String[] channels = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "HONEYCOMB", "ICE_CREAM_SANDWICH", "JELLY_BEAN", "KITKAT", "LOLLIPOP", "M", "NOUGAT"};
37-
private List<String> mDataList = Arrays.asList(channels);
34+
private static final String[] CHANNELS = new String[]{"CUPCAKE", "DONUT", "ECLAIR", "GINGERBREAD", "HONEYCOMB", "ICE_CREAM_SANDWICH", "JELLY_BEAN", "KITKAT", "LOLLIPOP", "M", "NOUGAT"};
35+
private List<String> mDataList = Arrays.asList(CHANNELS);
3836
private ExamplePagerAdapter mExamplePagerAdapter = new ExamplePagerAdapter(mDataList);
3937

38+
private ViewPager mViewPager;
39+
4040
@Override
4141
protected void onCreate(Bundle savedInstanceState) {
4242
super.onCreate(savedInstanceState);
Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,26 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
33
xmlns:tools="http://schemas.android.com/tools"
4-
android:id="@+id/activity_dynamic_tab_example"
54
android:layout_width="match_parent"
65
android:layout_height="match_parent"
7-
android:paddingBottom="@dimen/activity_vertical_margin"
8-
android:paddingLeft="@dimen/activity_horizontal_margin"
9-
android:paddingRight="@dimen/activity_horizontal_margin"
10-
android:paddingTop="@dimen/activity_vertical_margin"
6+
android:orientation="vertical"
117
tools:context="net.lucode.hackware.magicindicatordemo.example.DynamicTabExampleActivity">
128

13-
<TextView
14-
android:layout_width="wrap_content"
9+
<net.lucode.hackware.magicindicator.MagicIndicator
10+
android:id="@+id/magic_indicator1"
11+
android:layout_width="match_parent"
12+
android:layout_height="@dimen/common_navigator_height" />
13+
14+
<android.support.v4.view.ViewPager
15+
android:id="@+id/view_pager"
16+
android:layout_width="match_parent"
17+
android:layout_height="0dp"
18+
android:layout_weight="1" />
19+
20+
<Button
21+
android:layout_width="match_parent"
1522
android:layout_height="wrap_content"
16-
android:layout_centerInParent="true"
17-
android:text="coming soon!" />
23+
android:onClick="randomPage"
24+
android:text="@string/random_page" />
1825

19-
</RelativeLayout>
26+
</LinearLayout>

app/src/main/res/values/strings.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
<string name="work_with_fragment_container">work with fragment container</string>
88
<string name="tab_with_badge_view">tab with badge view</string>
99
<string name="custom_navigator">custom navigator</string>
10+
<string name="random_page">random page</string>
1011
</resources>

0 commit comments

Comments
 (0)