Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android -- DrawerLayout

Android -- DrawerLayout

編輯:關於Android編程

android-support-v4.jar                                                                首先, DrawerLayout這個類是在Support Library裡的,需要加上android-support-v4.jar這個包。   然後程序中用時在前面導入import android.support.v4.widget.DrawerLayout;   如果找不到這個類,首先用SDK Manager更新一下Android Support Library,然後在Android SDK\extras\android\support\v4路徑下找到android-support-v4.jar,復制到項目的libs路徑,將其Add to Build Path.   Code                                                                                      復制代碼 <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" >       <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" >           <!-- The main content view -->         <!-- main content must be the first element of DrawerLayout because it will be drawn first and drawer must be on top of it -->           <FrameLayout             android:id="@+id/content_frame"             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="match_parent"             android:layout_gravity="left"             android:background="#111"             android:choiceMode="singleChoice"             android:divider="@android:color/transparent"             android:dividerHeight="0dp" />     </android.support.v4.widget.DrawerLayout>   </RelativeLayout> 復制代碼 DrawerLayout的第一個子元素是主要內容,即抽屜沒有打開時顯示的布局。這裡采用了一個FrameLayout,裡面什麼也沒放。   DrawerLayout的第二個子元素是抽屜中的內容,即抽屜布局,這裡采用了一個ListView。   復制代碼 import android.os.Bundle; import android.app.Activity; import android.content.res.Configuration; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView; import android.support.v4.app.ActionBarDrawerToggle; import android.support.v4.view.GravityCompat; import android.support.v4.widget.DrawerLayout;   public class HelloDrawerActivity extends Activity {       private String[] mPlanetTitles;     private DrawerLayout mDrawerLayout;     private ActionBarDrawerToggle mDrawerToggle;     private ListView mDrawerList;       @Override     public void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_hello_drawer);           mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);           // init the ListView and Adapter, nothing new         initListView();           // set a custom shadow that overlays the main content when the drawer         // opens         mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow,                 GravityCompat.START);           mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,                 R.drawable.ic_drawer, R.string.drawer_open,                 R.string.drawer_close)         {               /** Called when a drawer has settled in a completely closed state. */             public void onDrawerClosed(View view)             {                   invalidateOptionsMenu(); // creates call to                                             // onPrepareOptionsMenu()             }               /** Called when a drawer has settled in a completely open state. */             public void onDrawerOpened(View drawerView)             {                   invalidateOptionsMenu(); // creates call to                                             // onPrepareOptionsMenu()             }         };           // Set the drawer toggle as the DrawerListener         mDrawerLayout.setDrawerListener(mDrawerToggle);           // enable ActionBar app icon to behave as action to toggle nav drawer         getActionBar().setDisplayHomeAsUpEnabled(true);         // getActionBar().setHomeButtonEnabled(true);         // Note: getActionBar() Added in API level 11     }       private void initListView()     {         mDrawerList = (ListView) findViewById(R.id.left_drawer);           mPlanetTitles = getResources().getStringArray(R.array.planets_array);           // Set the adapter for the list view         mDrawerList.setAdapter(new ArrayAdapter<String>(this,                 R.layout.list_item, mPlanetTitles));         // Set the list's click listener         mDrawerList.setOnItemClickListener(new OnItemClickListener()         {               @Override             public void onItemClick(AdapterView<?> parent, View view,                     int position, long id)             {                 // Highlight the selected item, update the title, and close the                 // drawer                 mDrawerList.setItemChecked(position, true);                 setTitle(mPlanetTitles[position]);                 mDrawerLayout.closeDrawer(mDrawerList);             }         });     }       @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);         mDrawerToggle.onConfigurationChanged(newConfig);     }       @Override     public boolean onOptionsItemSelected(MenuItem item)     {         // Pass the event to ActionBarDrawerToggle, if it returns         // true, then it has handled the app icon touch event         if (mDrawerToggle.onOptionsItemSelected(item))         {             return true;         }         // Handle your other action bar items...           return super.onOptionsItemSelected(item);     }   } 復制代碼 例子是從官方實例中扒出來的,比較糾結的是用了Level 11的一個API,這樣minSdkVersion就有限制,不能太低。   Or Code                                                                                  復制代碼 <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"     android:paddingBottom="@dimen/activity_vertical_margin"     android:paddingLeft="@dimen/activity_horizontal_margin"     android:paddingRight="@dimen/activity_horizontal_margin"     android:paddingTop="@dimen/activity_vertical_margin"     tools:context=".DrawerActivity" >       <android.support.v4.widget.DrawerLayout         android:id="@+id/drawer_layout"         android:layout_width="match_parent"         android:layout_height="match_parent" >           <!-- The main content view -->           <FrameLayout             android:id="@+id/content_frame"             android:layout_width="match_parent"             android:layout_height="match_parent" >               <Button                 android:id="@+id/btn"                 android:layout_width="match_parent"                 android:layout_height="wrap_content"                 android:text="open"                  />         </FrameLayout>           <!-- The navigation drawer -->           <ListView             android:id="@+id/left_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>   </RelativeLayout> 復制代碼 復制代碼 public class DrawerActivity extends Activity {     private DrawerLayout mDrawerLayout = null;       @Override     protected void onCreate(Bundle savedInstanceState)     {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_drawer);           mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);           Button button = (Button) findViewById(R.id.btn);         button.setOnClickListener(new OnClickListener()         {               @Override             public void onClick(View v)             {                 // 按鈕按下,將抽屜打開                 mDrawerLayout.openDrawer(Gravity.LEFT);               }         });     }  
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved