Android SlidingDrawer with Viewpager Example
This post about how to add multiple tab with sliding drawer.
Create layout with Sliding Drawer and View Pager in XML layout.
Activity Source code
DownLoadSourceCode From GIT
Sample Application in Play Store
This post about how to add multiple tab with sliding drawer.
Create layout with Sliding Drawer and View Pager in XML layout.
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<android.support.v4.view.ViewPager
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
</android.support.v4.view.ViewPager>
<!-- The navigation drawer -->
<ListView
android:id="@+id/slider_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#d9d3c3"
android:choiceMode="singleChoice"
android:divider="#04344e"
android:dividerHeight="1dp"
android:listSelector="#a9c0cc"
android:padding="3dip"
/>
</android.support.v4.widget.DrawerLayout>
Activity Source code
package
com.example.tabwithslidingdrawer;
import java.util.ArrayList;
import java.util.List;
import
android.content.Intent;
import
android.content.res.Configuration;
import
android.content.res.TypedArray;
import android.net.Uri;
import android.os.Bundle;
import
android.support.v4.app.ActionBarDrawerToggle;
import
android.support.v4.app.Fragment;
import
android.support.v4.app.FragmentManager;
import
android.support.v4.app.FragmentStatePagerAdapter;
import
android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import
android.support.v4.widget.DrawerLayout;
import
android.support.v7.app.ActionBar;
import
android.support.v7.app.ActionBar.Tab;
import
android.support.v7.app.ActionBar.TabListener;
import
android.support.v7.app.ActionBarActivity;
import android.text.Html;
import
android.view.LayoutInflater;
import android.view.Menu;
import
android.view.MenuItem;
import android.view.View;
import
android.view.ViewGroup;
import
android.widget.AdapterView;
import
android.widget.ListView;
public class MainActivity extends ActionBarActivity implements
android.support.v7.app.ActionBar.OnNavigationListener,
TabListener {
String[] tabsName_thatstamil = { "சற்று முன்", "சினிமா", "வர்த்தகம்",
"கலாச்சாரம் ", "பெண்கள்" };
ViewPager viewPager;
TapFragmentManager fragmentManger;
ActionBar actionBar;
String[] menutitles;
TypedArray menuIcons;
// nav drawer title
private CharSequence mTitle;
private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ActionBarDrawerToggle mDrawerToggle;
private List<DrawingRowItem> rowItems;
private CustomAdapter adapter;
int tabsize;
int selectedpositoin;
@Override
protected void onCreate(Bundle
savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewPager = (ViewPager)
findViewById(R.id.pager);
actionBar =
getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
fragmentManger = new
TapFragmentManager(getSupportFragmentManager());
viewPager.setAdapter(fragmentManger);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
menutitles = getResources().getStringArray(R.array.news_Sites);
mDrawerLayout = (DrawerLayout)
findViewById(R.id.drawer_layout);
mDrawerList = (ListView)
findViewById(R.id.slider_list);
rowItems = new
ArrayList<DrawingRowItem>();
for (int i = 0; i < menutitles.length; i++) {
DrawingRowItem items = new DrawingRowItem(menutitles[i]);
rowItems.add(items);
}
getSupportActionBar().setTitle(
Html.fromHtml("<font
color=\"black\">" + mTitle + " - "
+ menutitles[0] + "</font>"));
// getActionBar().setTitle(mTitle +menutitles[0]);
adapter = new
CustomAdapter(getApplicationContext(), rowItems);
mDrawerList.setAdapter(adapter);
mDrawerList.setOnItemClickListener(new
SlideitemListener());
// enabling action bar app
icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new
ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.app_name, R.string.app_name) {
public void onDrawerClosed(View
view) {
//
getActionBar().setTitle(mTitle
// +menutitles[selectedpositoin]);
getSupportActionBar().setTitle(
Html.fromHtml("<font
color=\"black\">" + mTitle + " - "
+
menutitles[selectedpositoin] + "</font>"));
// calling
onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View
drawerView) {
getActionBar().setTitle(
Html.fromHtml("<font
color=\"grey\">"
+ "Select News papers" + "</font>"));
// calling
onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
for (String str : tabsName_thatstamil) {
actionBar.addTab(actionBar.newTab().setText(str)
.setTabListener(this));
}
viewPager
.setOnPageChangeListener(new
android.support.v4.view.ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int tabPosition) {
actionBar.setSelectedNavigationItem(tabPosition);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated
method stub
}
@Override
public void
onPageScrollStateChanged(int arg0) {
// TODO Auto-generated
method stub
}
});
}
class SlideitemListener implements
ListView.OnItemClickListener {
@Override
public void
onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// / Do Here your
fragment things
fragmentManger = new
TapFragmentManager(getSupportFragmentManager());
viewPager.setAdapter(fragmentManger);
mDrawerLayout.closeDrawer(mDrawerList);
}
}
/**
*
A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public
PlaceholderFragment() {
}
@Override
public View
onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
{
View rootView =
inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
}
@Override
public boolean
onNavigationItemSelected(int itemPosition, long itemId) {
// TODO Auto-generated
method stub
return false;
}
public class TapFragmentManager extends
FragmentStatePagerAdapter {
public
TapFragmentManager(FragmentManager fm) {
super(fm);
}
@Override
public SampleFragment
getItem(int tab_position) {
return new SampleFragment();
}
@Override
public int getCount() {
// TODO Auto-generated
method stub
return tabsName_thatstamil.length;
}
}
@Override
public void onTabReselected(Tab
arg0, FragmentTransaction arg1) {
// TODO Auto-generated
method stub
}
@Override
public void onTabSelected(Tab
tab, FragmentTransaction arg1) {
// TODO Auto-generated
method stub
viewPager.setCurrentItem(tab.getPosition());
// viewPager.notifyAll();
}
@Override
public void onTabUnselected(Tab
arg0, FragmentTransaction arg1) {
// TODO Auto-generated
method stub
}
@Override
protected void onPostCreate(Bundle
savedInstanceState) {
super.onPostCreate(savedInstanceState);
// Sync the toggle state after
onRestoreInstanceState has occurred.
mDrawerToggle.syncState();
}
@Override
public void
onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Pass any configuration change to
the drawer toggles
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public boolean
onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean
onOptionsItemSelected(MenuItem item) {
// toggle nav drawer on
selecting action bar app icon/title
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
int id =
item.getItemId();
if (id == R.id.action_settings) {
startActivity(new Intent(
Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/apps/details?id=com.flashnews.tamilflashnews")));
return true;
}
return super.onOptionsItemSelected(item);
}
/***
*
Called when invalidateOptionsMenu() is triggered
*/
@Override
public boolean
onPrepareOptionsMenu(Menu menu) {
// if nav drawer is opened,
hide the action items
boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
}
DownLoadSourceCode From GIT
Sample Application in Play Store