diff --git a/.idea/modules.xml b/.idea/modules.xml index 7c640678..bb5dec50 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -3,8 +3,11 @@ + + + \ No newline at end of file diff --git a/README.md b/README.md index 90212cb7..a75e4c95 100644 --- a/README.md +++ b/README.md @@ -165,6 +165,32 @@ bottomBar.setTabSelectionInterceptor(new TabSelectionInterceptor() { }); ``` +### Setting up with ViewPager + +If you want to set up the tabs with ViewPager (v4), which usually is the case of tabs with FragmentPagerAdapter, +you dont have to do any extra work, just pass your ViewPager in ```setUpWithViewPager()``` method. And it will behave +accordingly. Any change in tab will update fragment (ViewPager) and any change in ViewPager (slide/setCurrentItem) +will update tabs. + +```java + + // get viewpager instance + viewPager = (ViewPager) findViewById(R.id.viewpager_button); + + // initiate viewpager adapter + ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); + + + // set adapter to viewpager + viewPager.setAdapter(viewPagerAdapter); + + // just add viewpager to bottombar + bottomBar.setUpWithViewPager(viewPager); + + // Now viewpager and bottom bar will work together +``` + + ### Changing icons based on selection state If you want to have different icon when a specific tab is selected, just use state list drawables. diff --git a/app/build.gradle b/app/build.gradle index 434d4acd..b73e6d7c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -32,6 +32,6 @@ dependencies { androidTestCompile 'com.android.support.test:runner:0.5' androidTestCompile 'com.android.support.test:rules:0.5' androidTestCompile 'org.mockito:mockito-core:1.10.19' - androidTestCompile "com.google.dexmaker:dexmaker:1.2" - androidTestCompile "com.google.dexmaker:dexmaker-mockito:1.2" + androidTestCompile 'com.google.dexmaker:dexmaker:1.2' + androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index fd181570..f6f4add6 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -19,10 +19,15 @@ - - + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/bottombar/sample/MainActivity.java b/app/src/main/java/com/example/bottombar/sample/MainActivity.java index 87a23cd2..b5b5e134 100644 --- a/app/src/main/java/com/example/bottombar/sample/MainActivity.java +++ b/app/src/main/java/com/example/bottombar/sample/MainActivity.java @@ -17,6 +17,7 @@ protected void onCreate(Bundle savedInstanceState) { findViewById(R.id.five_tabs_changing_colors).setOnClickListener(this); findViewById(R.id.three_tabs_quick_return).setOnClickListener(this); findViewById(R.id.five_tabs_custom_colors).setOnClickListener(this); + findViewById(R.id.viewpager_button).setOnClickListener(this); findViewById(R.id.badges).setOnClickListener(this); } @@ -40,6 +41,9 @@ public void onClick(View v) { case R.id.five_tabs_custom_colors: clazz = CustomColorAndFontActivity.class; break; + case R.id.viewpager_button: + clazz = ViewPagerActivity.class; + break; case R.id.badges: clazz = BadgeActivity.class; break; diff --git a/app/src/main/java/com/example/bottombar/sample/ViewPagerActivity.java b/app/src/main/java/com/example/bottombar/sample/ViewPagerActivity.java new file mode 100644 index 00000000..7fbeabcd --- /dev/null +++ b/app/src/main/java/com/example/bottombar/sample/ViewPagerActivity.java @@ -0,0 +1,92 @@ +package com.example.bottombar.sample; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.support.v4.view.ViewPager; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; + +import com.roughike.bottombar.BottomBar; + +/** + * The ViewPager example activity. + * This illustrates how simply you can hook up bottom bar with your viewpager by calling just one method + * Please note that you need a working viewpager adapter to achieve error free results. + */ +public class ViewPagerActivity extends AppCompatActivity { + + /** + * The View pager. + */ + ViewPager viewPager; + /** + * The Bottom bar. + */ + BottomBar bottomBar; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_view_pager); + + + // initialize views by xml references + initViews(); + + // initiate viewpager + ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager()); + + + // set adapter to viewpager + viewPager.setAdapter(viewPagerAdapter); + + // just add viewpager to bottombar + bottomBar.setUpWithViewPager(viewPager); + + // Now viewpager and bottom bar will work together + + + } + + + private void initViews() { + + viewPager = (ViewPager) findViewById(R.id.viewpager_button); + bottomBar = (BottomBar) findViewById(R.id.bottomBar); + + } + + /** + * The View pager adapter to manage fragments. + */ + + public class ViewPagerAdapter extends FragmentStatePagerAdapter { + + + /** + * Instantiates a new View pager adapter. + * + * @param fm the SupportFragmentManager object + */ + public ViewPagerAdapter(FragmentManager fm) { + super(fm); + } + + + + @Override + public Fragment getItem(int position) { + + + return SampleFragment.newInstance("This is Fragment #" + (position + 1)); + } + + @Override + public int getCount() { + return 3; // working with 3 fragments for now + } + } + +} diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e90ec527..2c9d03ab 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -43,6 +43,12 @@ android:layout_height="wrap_content" android:text="Three tabs with Quick Return" /> +