| 方案 | 特點 | 適用場景 |
|---|---|---|
| SlidingMenu (jfeinstein10) | 經典、穩定、Activity/Fragment 均支援 | 老專案維護、快速接入 |
| NavigationView + DrawerLayout | Google 官方 Material Design 組件、現代化 | 新專案、遵循 MD 規範 |
| 自定義 View + 手勢檢測 | 完全可控、學習成本高 | 特殊交互需求 |
implementation 'com.jeremyfeinstein.slidingmenu:library:1.3.1' (或複製源碼模組)public class MainActivity extends SlidingFragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setBehindContentView(R.layout.menu_frame); // 設定側邊欄佈局
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, new MenuFragment()).commit();
}
}<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="..."
xmlns:app="..."
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 主內容 -->
<FrameLayout android:id="@+id/content_frame" ... />
<!-- 側邊欄 -->
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:menu="@menu/drawer_menu" />
</androidx.drawerlayout.widget.DrawerLayout>
**新專案直接使用 NavigationView + DrawerLayout**,符合 Material Design、官方長期維護、與 Fragment/Navigation Component 無縫整合。