Создание ящика макета
Чтобы добавить панель навигации, объявить пользовательский интерфейс с объектом aDrawerLayout в качестве корневого зрения макета. Внутри theDrawerLayout добавьте одно представление, содержащее основное содержимое экрана (ваш основной макет, когда ящик скрыт), и другое представление, содержащее содержимое навигационного ящика.
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
Этот макет демонстрирует некоторые важные характеристики макета: Основной вид контента (выше FrameLayout) должен быть первым ребенком в DrawerLayout, поскольку порядок XML предполагает г-упорядочивание и выдвижной ящик должен быть на вершине содержание. Основной вид содержимого установлен в соответствии с шириной и высотой родительского представления, поскольку он представляет весь пользовательский интерфейс, когда ящик навигации скрыт. Вид ящика (ListView) должен указывать его горизонтальную гравитацию с помощью андроида: layout_gravityattribute. Для поддержки языков «справа налево» (RTL) укажите значение «start» вместо «left» (поэтому ящик появляется справа, когда макет RTL). Вид выдвижного ящика указывает его ширину в единицах dp, а высота соответствует родительскому виду. Ширина ящика должна быть не более 320dp, поэтому пользователь всегда может видеть часть основного содержимого. Инициализировать список ящиков & Ящик Latyout
Сначала вы должны инициализировать список ящиков и расположение ящика. Затем необходимо установить значения для списка с помощью адаптера.
mColors = getResources().getStringArray(R.array.colors_array);
mDrawerLayout=(DrawerLayout)findViewById(R.id.drawer_layout);
mDrawerList=(ListView)findViewById(R.id.left_drawer);
Прислушайтесь Открыть и Закрыть События
Для прослушивания ящика открытого и близких событий, вызовите setDrawerListener() на вашем DrawerLayout и передать его реализацию DrawerLayout.DrawerListener. Этот интерфейс обеспечивает обратные вызовы для событий ящика, таких как onDrawerOpened() и onDrawerClosed().
mDrawerToggle=new ActionBarDrawerToggle(this, mDrawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close){
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
Handle Навигация Нажмите События
Когда пользователь выбирает элемент в списке выдвижного ящика, система вызывает onItemClick() на theOnItemClickListener дано setOnItemClickListener().
public class DrawerItemClickListener implements OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) {
// TODO Auto-generated method stub
selectItem(position);
}
}
private void selectItem(int position){
Fragment fragment=new ColorsFragment();
Bundle bundle=new Bundle();
bundle.putInt("Position", position);
fragment.setArguments(bundle);
FragmentManager fragmentManager=getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
Toast.makeText(this, position+"", Toast.LENGTH_SHORT).show();
mDrawerList.setItemChecked(position, true);
setTitle(mPlanetTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
в SelectItem() вы должны вызвать соответствующий фрагмент к дать position.Here у меня есть создать простой фрагмент и изменить цвет фона и текста в зависимости от ввода дают.
public class ColorsFragment extends Fragment{
private int[] colors;
private int position;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootview=inflater.inflate(R.layout.fragment_layout, container,false);
position=getArguments().getInt("Position");
RelativeLayout layout=(RelativeLayout)rootview.findViewById(R.id.layout);
TextView textView=(TextView)rootview.findViewById(R.id.textview);
colors=getActivity().getResources().getIntArray(R.array.colors);
textView.setText(getResources().getStringArray(R.array.colors_array)[position]);
layout.setBackgroundColor(colors[position]);
return rootview;
}
}
При использовании ActionBarDrawerToggle, вы должны вызвать его во время onPostCreate() и onConfigurationChanged()
@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 toggls
mDrawerToggle.onConfigurationChanged(newConfig);
}
Для получения дополнительной справочной поездки: http://velmuruganandroidcoding.blogspot.in/2014/09/navigation-drawer-in-android.html
http://www.androiddevelopersolution.com /2013/04/facebook-like-slide-in-and-slide-out.html –