-
Notifications
You must be signed in to change notification settings - Fork 6.3k
Common Navigation Paradigms
Navigation between views is an important part of any application. There are several ways to setup navigation in an Android application:
- ActionBar - Using the ActionBar and/or ActionBar tabs to switch between different views
- Navigation Drawer - Displays a vertical menu that slides in to allow navigation between views
- Screen Map - Providing a series of buttons on screen that can be pressed to visit different views
- Swipe Views - Allow paging between views using a swipe gesture
These four represent the most common navigation paradigms in Android applications. The specifics for how to implement these can be found in the various links above.
For a description of how to add ActionBar tabs to your Activity, check out the ActionBar Tabs cliffnotes for more details.
To create a basic navigation drawer that toggles between displaying different fragments, check out the Fragment Navigation Drawer cliffnotes. For more details about creating a custom drawer check out the Creating a Navigation Drawer docs.
Although both of the navigation drawer examples show how fragments can be substituted with the navigation drawer, you can also use RelativeLayout/LinearLayout if you wish to use the drawer as an overlay to your currently displayed Activity.
Instead of <FrameLayout> you can subsitute for <LinearLayout>
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/drawer_layout">
<LinearLayout
android:id="@+id/content_frame"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!-- The navigation drawer -->
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="wrap_content"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Instead of:
// Insert the fragment by replacing any existing fragment
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment)
.commit();
You can also use the LinearLayout container to inflate the Activity:
LayoutInflater inflater = getLayoutInflater();
LinearLayout container = (LinearLayout) findViewById(R.id.content_frame);
inflater.inflate(R.layout.activity_main, container);
Created by CodePath with much help from the community. Contributed content licensed under cc-wiki with attribution required. You are free to remix and reuse, as long as you attribute and use a similar license.
Finding these guides helpful?
We need help from the broader community to improve these guides, add new topics and keep the topics up-to-date. See our contribution guidelines here and our topic issues list for great ways to help out.
Check these same guides through our standalone viewer for a better browsing experience and an improved search. Follow us on twitter @codepath for access to more useful Android development resources.