Skip to content

Commit edb89b2

Browse files
committed
Added tabLayout in viewpager
1 parent b2b3044 commit edb89b2

28 files changed

+234
-56
lines changed

ViewPager/app/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies {
2626
implementation fileTree(dir: "libs", include: ["*.jar"])
2727
implementation 'androidx.appcompat:appcompat:1.2.0'
2828
implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
29+
implementation 'com.google.android.material:material:1.2.0'
2930
testImplementation 'junit:junit:4.12'
3031
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
3132
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'

ViewPager/app/src/main/AndroidManifest.xml

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
<category android:name="android.intent.category.LAUNCHER" />
1717
</intent-filter>
1818
</activity>
19-
<activity android:name=".Activity1_ImageViewPager" />
20-
<activity android:name=".Activity2_NormalViewPager"/>
21-
<activity android:name=".Activity3_InfiniteScrollViewPager"/>
19+
<activity android:name=".vp1.Activity1_ImageViewPager" />
20+
<activity android:name=".vp2.Activity2_NormalViewPager"/>
21+
<activity android:name=".vp3.Activity3_InfiniteScrollViewPager"/>
2222
<activity android:name=".vp4.Activity4_AutoInfiniteScrollPager" />
23-
<activity android:name=".Activity5_TabLayoutViewPager"/>
24-
<activity android:name=".Activity6_DynamicViewPager"/>
23+
<activity android:name=".vp5.Activity5_TabLayoutViewPager"/>
24+
<activity android:name=".vp6.Activity6_DynamicViewPager"/>
2525

2626
</application>
2727

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/Activity5_TabLayoutViewPager.java

-16
This file was deleted.

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/MainActivity.java

+5
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,12 @@
66
import android.os.Bundle;
77
import android.view.View;
88

9+
import in.rafique.androidbasics.viewpager.vp1.Activity1_ImageViewPager;
10+
import in.rafique.androidbasics.viewpager.vp2.Activity2_NormalViewPager;
11+
import in.rafique.androidbasics.viewpager.vp3.Activity3_InfiniteScrollViewPager;
912
import in.rafique.androidbasics.viewpager.vp4.Activity4_AutoInfiniteScrollPager;
13+
import in.rafique.androidbasics.viewpager.vp5.Activity5_TabLayoutViewPager;
14+
import in.rafique.androidbasics.viewpager.vp6.Activity6_DynamicViewPager;
1015

1116
public class MainActivity extends AppCompatActivity {
1217

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/Activity1_ImageViewPager.java ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp1/Activity1_ImageViewPager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package in.rafique.androidbasics.viewpager;
1+
package in.rafique.androidbasics.viewpager.vp1;
22

33
import android.os.Bundle;
44

@@ -7,6 +7,8 @@
77

88
import java.util.ArrayList;
99

10+
import in.rafique.androidbasics.viewpager.R;
11+
1012
public class Activity1_ImageViewPager extends AppCompatActivity {
1113

1214
@Override

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/ViewPager1_ImageOnlyAdapter.java ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp1/ViewPager1_ImageOnlyAdapter.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package in.rafique.androidbasics.viewpager;
1+
package in.rafique.androidbasics.viewpager.vp1;
22

33
import android.content.Context;
44
import android.view.LayoutInflater;
@@ -13,6 +13,8 @@
1313

1414
import java.util.ArrayList;
1515

16+
import in.rafique.androidbasics.viewpager.R;
17+
1618
public class ViewPager1_ImageOnlyAdapter extends PagerAdapter {
1719
//we extend the PagerAdapter class, which is the basic class for instantiating any type of pager
1820
// FragmentPagerAdapter & FragmentStatePagerAdapter are used when we are playing around with fragments

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/Activity2_NormalViewPager.java ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp2/Activity2_NormalViewPager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
package in.rafique.androidbasics.viewpager;
1+
package in.rafique.androidbasics.viewpager.vp2;
22

33
import androidx.appcompat.app.AppCompatActivity;
44
import androidx.viewpager.widget.ViewPager;
55

66
import android.os.Bundle;
77

8+
import in.rafique.androidbasics.viewpager.R;
9+
810
import static androidx.fragment.app.FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT;
911

1012
public class Activity2_NormalViewPager extends AppCompatActivity {

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/VPAdapter2_NormalFragments.java ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp2/VPAdapter2_NormalFragments.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package in.rafique.androidbasics.viewpager;
1+
package in.rafique.androidbasics.viewpager.vp2;
22

33
import androidx.annotation.NonNull;
44
import androidx.fragment.app.Fragment;

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/Activity3_InfiniteScrollViewPager.java ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp3/Activity3_InfiniteScrollViewPager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
1-
package in.rafique.androidbasics.viewpager;
1+
package in.rafique.androidbasics.viewpager.vp3;
22

33
import android.os.Bundle;
44

55
import androidx.appcompat.app.AppCompatActivity;
66
import androidx.viewpager.widget.ViewPager;
77

8+
import in.rafique.androidbasics.viewpager.R;
9+
810
import static androidx.fragment.app.FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT;
911

1012
public class Activity3_InfiniteScrollViewPager extends AppCompatActivity {

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/VPAdapter3_InfiniteScroll.java ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp3/VPAdapter3_InfiniteScroll.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package in.rafique.androidbasics.viewpager;
1+
package in.rafique.androidbasics.viewpager.vp3;
22

33
import androidx.annotation.NonNull;
44
import androidx.fragment.app.Fragment;

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp4/Activity4_AutoInfiniteScrollPager.java

-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import androidx.appcompat.app.AppCompatActivity;
66
import in.rafique.androidbasics.viewpager.R;
7-
import in.rafique.androidbasics.viewpager.VPAdapter3_InfiniteScroll;
87

98
import static androidx.fragment.app.FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT;
109

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package in.rafique.androidbasics.viewpager.vp5;
2+
3+
import android.content.Context;
4+
import android.os.Bundle;
5+
6+
import androidx.appcompat.app.AppCompatActivity;
7+
import androidx.viewpager.widget.ViewPager;
8+
9+
import com.google.android.material.tabs.TabLayout;
10+
11+
import in.rafique.androidbasics.viewpager.R;
12+
13+
import static androidx.fragment.app.FragmentStatePagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT;
14+
15+
public class Activity5_TabLayoutViewPager extends AppCompatActivity {
16+
Context context ;
17+
ViewPager viewPager ;
18+
19+
@Override
20+
protected void onCreate(Bundle savedInstanceState) {
21+
super.onCreate(savedInstanceState);
22+
setContentView(R.layout.activity5_tabs);
23+
context = this ;
24+
25+
setupViewPager() ;
26+
setupTabLayout() ;
27+
}
28+
29+
private void setupViewPager() {
30+
viewPager = findViewById(R.id.viewPager);
31+
VPAdapter5_TabLayout vpAdapter = new VPAdapter5_TabLayout(getSupportFragmentManager(), BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
32+
viewPager.setAdapter(vpAdapter);
33+
34+
35+
}
36+
private void setupTabLayout(){
37+
TabLayout tabLayout = findViewById(R.id.tabLayout) ;
38+
tabLayout.setupWithViewPager(viewPager);
39+
40+
tabLayout.getTabAt(0).setIcon(R.drawable.pizza_white) ; // can also set tab icons programatically
41+
tabLayout.getTabAt(1).setIcon(R.drawable.hamburger_white) ; // can also set tab icons programatically
42+
tabLayout.getTabAt(2).setIcon(R.drawable.coffee_white) ; // can also set tab icons programatically
43+
tabLayout.getTabAt(3).setIcon(R.drawable.cupcake_white) ; // can also set tab icons programatically
44+
tabLayout.getTabAt(4).setIcon(R.drawable.donut_white) ; // can also set tab icons programatically
45+
tabLayout.getTabAt(5).setIcon(R.drawable.drink_white) ; // can also set tab icons programatically
46+
47+
tabLayout.getTabAt(1).select();
48+
tabLayout.getTabAt(0).select();
49+
50+
51+
52+
tabLayout.addOnTabSelectedListener(
53+
new TabLayout.ViewPagerOnTabSelectedListener(viewPager) {
54+
55+
@Override
56+
public void onTabSelected(TabLayout.Tab tab) {
57+
super.onTabSelected(tab);
58+
// int tabIconColor = ContextCompat.getColor(context, R.color.white);
59+
// tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
60+
}
61+
62+
@Override
63+
public void onTabUnselected(TabLayout.Tab tab) {
64+
super.onTabUnselected(tab);
65+
// int tabIconColor = ContextCompat.getColor(context, R.color.grey);
66+
// tab.getIcon().setColorFilter(tabIconColor, PorterDuff.Mode.SRC_IN);
67+
}
68+
69+
@Override
70+
public void onTabReselected(TabLayout.Tab tab) {
71+
super.onTabReselected(tab);
72+
}
73+
}
74+
);
75+
}
76+
77+
78+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package in.rafique.androidbasics.viewpager.vp5;
2+
3+
import androidx.annotation.NonNull;
4+
import androidx.fragment.app.Fragment;
5+
import androidx.fragment.app.FragmentManager;
6+
import androidx.fragment.app.FragmentPagerAdapter;
7+
8+
import in.rafique.androidbasics.viewpager.fragments.Fragment1;
9+
import in.rafique.androidbasics.viewpager.fragments.Fragment2;
10+
import in.rafique.androidbasics.viewpager.fragments.Fragment3;
11+
import in.rafique.androidbasics.viewpager.fragments.Fragment4;
12+
import in.rafique.androidbasics.viewpager.fragments.Fragment5;
13+
import in.rafique.androidbasics.viewpager.fragments.Fragment6;
14+
15+
public class VPAdapter5_TabLayout extends FragmentPagerAdapter {
16+
private String tabTitles[] = new String[] {"Pizza", "Burger", "Coffee", "Cupcake", "Donut", "Soda"};
17+
18+
public VPAdapter5_TabLayout(@NonNull FragmentManager fm, int behavior) {
19+
super(fm, behavior);
20+
}
21+
22+
@NonNull
23+
@Override
24+
public Fragment getItem(int position) {
25+
switch (position){
26+
case 0 : return new Fragment1() ;
27+
case 1 : return new Fragment2() ;
28+
case 2 : return new Fragment3() ;
29+
case 3 : return new Fragment4() ;
30+
case 4 : return new Fragment5() ;
31+
case 5 : return new Fragment6() ;
32+
default: return new Fragment1() ;
33+
}
34+
35+
}
36+
37+
@Override
38+
public int getCount() {
39+
return 6;
40+
}
41+
42+
43+
@Override
44+
public CharSequence getPageTitle(int position) {
45+
// Generate title based on item position
46+
return tabTitles[position] ;
47+
}
48+
}

ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/Activity6_DynamicViewPager.java ViewPager/app/src/main/java/in/rafique/androidbasics/viewpager/vp6/Activity6_DynamicViewPager.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
package in.rafique.androidbasics.viewpager;
1+
package in.rafique.androidbasics.viewpager.vp6;
22

33
import android.os.Bundle;
44

55
import androidx.appcompat.app.AppCompatActivity;
66

7+
import in.rafique.androidbasics.viewpager.R;
8+
79
public class Activity6_DynamicViewPager extends AppCompatActivity {
810

911
@Override
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading

ViewPager/app/src/main/res/layout/activity1_image_pager.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
77
android:orientation="vertical"
8-
tools:context=".Activity1_ImageViewPager">
8+
tools:context=".vp1.Activity1_ImageViewPager">
99

1010
<TextView
1111
android:layout_width="match_parent"

ViewPager/app/src/main/res/layout/activity2_normal_view_pager.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
77
android:orientation="vertical"
8-
tools:context=".Activity2_NormalViewPager">
8+
tools:context=".vp2.Activity2_NormalViewPager">
99

1010
<TextView
1111
android:layout_width="match_parent"

ViewPager/app/src/main/res/layout/activity3_infinite_scroll.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
android:layout_width="match_parent"
66
android:layout_height="match_parent"
77
android:orientation="vertical"
8-
tools:context=".Activity3_InfiniteScrollViewPager">
8+
tools:context=".vp3.Activity3_InfiniteScrollViewPager">
99

1010
<TextView
1111
android:layout_width="match_parent"

ViewPager/app/src/main/res/layout/activity5.xml

-23
This file was deleted.

0 commit comments

Comments
 (0)