Ящик навигации с поддержкой обратной совместимости

У меня есть приложение, которое имеет четыре разных вида деятельности. Теперь я хочу добавить в приложение навигационный ящик для навигации по этим действиям. Может ли кто-нибудь дать пример или учебник для навигационного ящика для различной активности с поддержкой обратной совместимости. Я видел пример для fragmentов, но мне нужен пример для действий.

    Новая версия библиотеки поддержки v4 (выпуск 13), которая содержит поддержку шаблона навигационного ящика.
    Ознакомьтесь с приведенным ниже руководством «Ссылки для Navigation Drawer котором представлена ​​библиотека совместимости Navigation Drawer с реализацией в ней.

    1) Шторный навигационный ящик
    2) NavDrawerExampleAppCompat-v7
    3) Навигационный ящик в Android
    4) Создайте навигационный ящик

    Надеюсь, что это поможет вам.

    Вам нужно использовать appcompact из Библиотеки поддержки.

    Ваша деятельность должна расширить ActionBarActivity .

    В вашей деятельности

      public class MainActivity extends ActionBarActivity { 

    Импортировать

      import android.support.v7.app.ActionBarActivity; 

    Вместо getActionBar() используйте getSupportActionbar()

    Использовать Them.AppCompact

    Или используйте библиотеку ActionBarSherlock.

    https://stackoverflow.com/questions/20071004/add-icon-in-drawerlist-by-actionbarsherlock/20077469#20077469

    Пример:

    MainActivity.java

     public class MainActivity extends ActionBarActivity { // Fields ----------------------------------------------------------------- private DrawerLayout drawerLayout; private ListView drawerList; private ActionBarDrawerToggle drawerToggle; private MenuListAdapter menuAdapter; private int[] icons; private Fragment fragment1; private Fragment fragment2; private Fragment fragment3; private CharSequence drawerTitle; private CharSequence title; private final String[] titles = new String[]{ "Title Fragment #1", "Title Fragment #2", "Title Fragment #3" }; private final String[] subtitles = new String[]{ "Subtitle Fragment #1", "Subtitle Fragment #2", "Subtitle Fragment #3" }; // Lifecycle Callbacks ---------------------------------------------------- @Override protected void onCreate(Bundle savedInstanceState) { // Base implemenation super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Instantiate the fragments fragment1 = new Fragment1(); fragment2 = new Fragment2(); fragment3 = new Fragment3(); // Get the title from this activity title = drawerTitle = getTitle(); // Get the icons from the drawables folder icons = new int[]{ R.drawable.action_about, R.drawable.action_settings, R.drawable.collections_cloud }; // Get the drawer layout from the XML file and the ListView inside it drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); drawerList = (ListView)findViewById(R.id.listview_drawer); // Set a custom shadow over that overlays the main content // when the drawer opens drawerLayout.setDrawerShadow( R.drawable.drawer_shadow, GravityCompat.START); // Pass the string arrays to the MenuListAdapter, set the drawer // list adapter to it and set up its click listener menuAdapter = new MenuListAdapter( MainActivity.this, titles, subtitles, icons); drawerList.setAdapter(menuAdapter); drawerList.setOnItemClickListener(new DrawerItemClickListener()); // Enable the action bar to have up navigation getSupportActionBar().setHomeButtonEnabled(true); //getSupportActionBar().setDisplayHomeAsUpEnabled(true); // Allow the the action bar to toggle the drawer drawerToggle = new ActionBarDrawerToggle( this, drawerLayout, R.drawable.ic_drawer, R.string.drawer_open, R.string.drawer_close){ public void onDrawerClosed(View view){ super.onDrawerClosed(view); } public void onDrawerOpened(View view){ getSupportActionBar().setTitle(drawerTitle); super.onDrawerOpened(view); } }; drawerLayout.setDrawerListener(drawerToggle); // If this is the first time opening this activity, // start with loading fragment #1 if (savedInstanceState == null){ selectItem(0); } } // Methods ---------------------------------------------------------------- @Override public boolean onOptionsItemSelected(MenuItem item){ // If the user has pressed the action bar icon if (item.getItemId() == android.R.id.home){ // If the drawer is open, close it; vice versa if (drawerLayout.isDrawerOpen(drawerList)){ drawerLayout.closeDrawer(drawerList); } else { drawerLayout.openDrawer(drawerList); } } // Finish by letting the super class do the rest return super.onOptionsItemSelected(item); } @Override protected void onPostCreate(Bundle savedInstanceState){ // Call the super implementation and synchronize the drawer super.onPostCreate(savedInstanceState); drawerToggle.syncState(); } @Override public void onConfigurationChanged(Configuration newConfig){ // Call the super implemenation on this activity // and the drawer toggle object super.onConfigurationChanged(newConfig); drawerToggle.onConfigurationChanged(newConfig); } private void selectItem(int position){ // Create a new fragment transaction and start it FragmentTransaction fragTran = getSupportFragmentManager() .beginTransaction(); // Locate the position selected replace the content view // with the fragment of the number selected switch (position){ case 0:{ fragTran.replace(R.id.content_frame, fragment1); break; } case 1:{ fragTran.replace(R.id.content_frame, fragment2); break; } case 2:{ fragTran.replace(R.id.content_frame, fragment3); break; } } // Commit the transaction and close the drawer fragTran.commit(); drawerList.setItemChecked(position, true); drawerLayout.closeDrawer(drawerList); } public void setTitle(CharSequence title){ // Save the passed in title and set the action bar title this.title = title; getSupportActionBar().setTitle(title); } // Classes ---------------------------------------------------------------- private class DrawerItemClickListener implements ListView.OnItemClickListener{ @Override public void onItemClick( AdapterView parent, View view, int position, long id) { // When clicked, select open the appropriate fragment selectItem(position); } } } 

    activity_main.xml

         public class MenuListAdapter extends BaseAdapter { // Fields ----------------------------------------------------------------- private Context mcontext; private String[] titles; private String[] subtitles; private int[] icons; private LayoutInflater inflater; // Constructor ------------------------------------------------------------ public MenuListAdapter( Context context, String[] titles, String[] subtitles, int[] icons){ mcontext = context; this.titles = titles; this.subtitles = subtitles; this.icons = icons; inflater = (LayoutInflater)mcontext.getSystemService( Context.LAYOUT_INFLATER_SERVICE); } // Accessors -------------------------------------------------------------- @Override public int getCount(){ return titles.length; } @Override public Object getItem(int position){ return titles[position]; } @Override public long getItemId(int position){ return position; } // Methods ---------------------------------------------------------------- public View getView(int position, View convertView, ViewGroup parent){ ViewHolder viewHolder; // Only inflate the view if convertView is null if (convertView == null){ viewHolder = new ViewHolder(); if(inflater!=null) { convertView = inflater.inflate( R.layout.drawer_list_item, parent, false); viewHolder.txtTitle = (TextView)convertView.findViewById( R.id.title); viewHolder.txtSubtitle = (TextView)convertView.findViewById( R.id.subtitle); viewHolder.imgIcon = (ImageView)convertView.findViewById( R.id.icon); // This is the first time this view has been inflated, // so store the view holder in its tag fields convertView.setTag(viewHolder); } else { Log.i("........",""+null); } } else { viewHolder = (ViewHolder)convertView.getTag(); } // Set the views fields as needed viewHolder.txtTitle.setText(titles[position]); viewHolder.txtSubtitle.setText(subtitles[position]); viewHolder.imgIcon.setImageResource(icons[position]); return convertView; } // Classes ---------------------------------------------------------------- static class ViewHolder { TextView txtTitle; TextView txtSubtitle; ImageView imgIcon; } } 

    drawr_list_item.xml

             

    fragment1.xml

         

    fragment2.xml

        

    fragment3.xml

        

    Fragment1.java

     public class Fragment1 extends Fragment { String[] titles={"A","B","C"}; @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View rootView = inflater.inflate(R.layout.fragment1, container, false); ListView lv = (ListView) rootView.findViewById(R.id.listView1); ArrayAdapter adapter = new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1,titles); lv.setAdapter(adapter); return rootView; } } 

    Fragment2.java

     public class Fragment2 extends Fragment { @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View rootView = inflater.inflate(R.layout.fragment2, container, false); return rootView; } } 

    Fragment3.java

     public class Fragment3 extends Fragment { @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ View rootView = inflater.inflate(R.layout.fragment3, container, false); return rootView; } } 

    Добавить тему в манифест

     android:theme="@style/Theme.AppCompat" 

    Щелчок

    введите описание изображения здесь

    Навигационный ящик, который реализован при использовании DrawerLayout , если не используется какая-либо библиотека externel, доступен в пакете поддержки Android. Таким образом, он может использовать API 4 уровня, который пончик (1.6). Используйте эту ссылку для получения дополнительной информации DrawerLayout

    Interesting Posts

    Nhibernate: как отображать отношения «многие ко многим» с отношениями «один ко многим»?

    Поместите кнопки внизу экрана с помощью LinearLayout?

    Некоторые значки, прикрепленные к панели задач, дублируются при запуске экземпляра приложения

    Понимание цветов на Android (шесть символов)

    Управление порядком отображения легенды ggplot2

    Вставить вкладки в Chrome, которые открываются при запуске

    Почему я могу слышать мигание курсора на моем экране через наушники?

    Как читать локальный текстовый файл?

    Неужели невозможно отключить обновления в Windows 10?

    Как связать вызовы ajax с помощью jquery

    Как распечатать возвращенное сообщение от HttpResponse?

    Как продлить сертификат разработки iPhone?

    Должен ли я использовать Bootstrap из CDN или делать копию на моем сервере?

    Имея как созданные, так и обновленные столбцы временной отметки в MySQL 4.0

    Спящий / спящий режим Подтверждение экрана спящего / спящего режима?

    Давайте будем гением компьютера.