导航抽屉与后卫字符兼容的android

我有一个应用程序,有四个不同的活动。 现在我想在应用程序中添加一个导航抽屉来导航这些活动。 任何人都可以给出一个例子或导航抽屉教程为不同的活动与背单词兼容性。我已经看到了片段的例子,但我需要活动的例子。

新版本的v4支持库(版本13),其中包含对导航抽屉模式的支持。
查看下面的Navigation Drawer教程链接,它提供了Navigation Drawer的兼容性库以及其中的实现。

1) Sherlock导航抽屉
2) NavDrawerExampleAppCompat-v7
3) 在Android的导航抽屉
4) 创build导航抽屉

希望这会帮助你。

您需要使用支持库中的appcompact。

你的活动需要扩展ActionBarActivity

在你的活动

  public class MainActivity extends ActionBarActivity { 

import

  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中

 <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/listview_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="#111" android:choiceMode="singleChoice" android:divider="@android:color/transparent" android:dividerHeight="0dp"/> </android.support.v4.widget.DrawerLayout> 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

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/darker_gray" android:orientation="horizontal" style="?attr/dropdownListPreferredItemHeight" > <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="match_parent" android:adjustViewBounds="true"/> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center_vertical|left" android:orientation="vertical"> <TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:singleLine="true" style="?attr/spinnerDropDownItemStyle"/> <TextView android:id="@+id/subtitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:singleLine="true" style="?attr/spinnerDropDownItemStyle"/> </LinearLayout> </LinearLayout> 

fragment1.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/listView1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" > </ListView> </RelativeLayout> 

fragment2.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/Fragment2"/> </RelativeLayout> 

fragment3.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:text="@string/Fragment3"/> </RelativeLayout> 

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<String> adapter = new ArrayAdapter<String>(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实现的导航抽屉在Android支持包中是可用的。 所以它可以使用关于甜甜圈 (1.6)的API级别4 。 使用此链接更多信息DrawerLayout