Android側滑菜單DrawerLayout的使用

來源:互聯網
上載者:User

標籤:布局   listview   menu   layout   


現在側滑菜單使用很多,大都是通過SlidingMenu實現。現在也可以通過DrawerLayout

建立抽屜布局


frament_content.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:orientation="vertical" >    <TextView        android:id="@+id/textView"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:textSize="25sp" /></LinearLayout>
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" >    <!-- The main content view -->    <FrameLayout        android:id="@+id/content_frame"        android:layout_width="match_parent"        android:layout_height="match_parent" >    </FrameLayout>    <!-- The navigation view -->    <ListView        android:id="@+id/left_drawer"        android:layout_width="240dp"        android:layout_height="match_parent"        android:layout_gravity="start"        android:background="#ffffcc"        android:choiceMode="singleChoice"        android:divider="@android:color/transparent"        android:dividerHeight="0dp" >    </ListView></android.support.v4.widget.DrawerLayout>

然後建立一個類繼承Fragment類

/** * ContentFragment.java * 著作權(C) 2015 * 建立者:cuiran 2015-1-3 下午3:25:44 */package com.cayden.drawerlayoutdemo;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/** * TODO  * @author cuiran * @version 1.0.0 */public class ContentFragment extends Fragment {private TextView textView;@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {View view = inflater.inflate(R.layout.fragment_content, container, false);textView = (TextView) view.findViewById(R.id.textView);String text = getArguments().getString("text");textView.setText(text);return view;}}

完成Activity代碼

package com.cayden.drawerlayoutdemo;import java.util.ArrayList;import android.app.Activity;import android.app.Fragment;import android.app.FragmentManager;import android.content.Intent;import android.content.res.Configuration;import android.net.Uri;import android.os.Bundle;import android.support.v4.app.ActionBarDrawerToggle;import android.support.v4.widget.DrawerLayout;import android.view.Menu;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;public class MainActivity extends Activity implements OnItemClickListener {private DrawerLayout mDrawerLayout;private ListView mDrawerList;private ArrayList<String> menuLists;private ArrayAdapter<String> adapter;private ActionBarDrawerToggle mDrawerToggle;private String mTitle;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTitle = (String) getTitle();mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);mDrawerList = (ListView) findViewById(R.id.left_drawer);menuLists = new ArrayList<String>();for (int i = 0; i < 5; i++)menuLists.add("菜單0" + i);adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, menuLists);mDrawerList.setAdapter(adapter);mDrawerList.setOnItemClickListener(this);mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,R.drawable.ic_drawer, R.string.drawer_open,R.string.drawer_close) {@Overridepublic void onDrawerOpened(View drawerView) {super.onDrawerOpened(drawerView);getActionBar().setTitle("請選擇");invalidateOptionsMenu(); // Call onPrepareOptionsMenu()}@Overridepublic void onDrawerClosed(View drawerView) {super.onDrawerClosed(drawerView);getActionBar().setTitle(mTitle);invalidateOptionsMenu();}};mDrawerLayout.setDrawerListener(mDrawerToggle);//開啟ActionBar上APP ICON的功能getActionBar().setDisplayHomeAsUpEnabled(true);getActionBar().setHomeButtonEnabled(true);}@Overridepublic boolean onPrepareOptionsMenu(Menu menu) {boolean isDrawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);menu.findItem(R.id.action_websearch).setVisible(!isDrawerOpen);return super.onPrepareOptionsMenu(menu);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {//將ActionBar上的表徵圖與Drawer結合起來if (mDrawerToggle.onOptionsItemSelected(item)){return true;}switch (item.getItemId()) {case R.id.action_websearch:Intent intent = new Intent();intent.setAction("android.intent.action.VIEW");Uri uri = Uri.parse("http://www.baidu.com");intent.setData(uri);startActivity(intent);break;}return super.onOptionsItemSelected(item);}@Overrideprotected void onPostCreate(Bundle savedInstanceState) {super.onPostCreate(savedInstanceState);//需要將ActionDrawerToggle與DrawerLayout的狀態同步//將ActionBarDrawerToggle中的drawer表徵圖,設定為ActionBar中的Home-Button的IconmDrawerToggle.syncState();}@Overridepublic void onConfigurationChanged(Configuration newConfig) {super.onConfigurationChanged(newConfig);mDrawerToggle.onConfigurationChanged(newConfig);}@Overridepublic void onItemClick(AdapterView<?> arg0, View arg1, int position,long arg3) {// 動態插入一個Fragment到FrameLayout當中Fragment contentFragment = new ContentFragment();Bundle args = new Bundle();args.putString("text", menuLists.get(position));contentFragment.setArguments(args);FragmentManager fm = getFragmentManager();fm.beginTransaction().replace(R.id.content_frame, contentFragment).commit();mDrawerLayout.closeDrawer(mDrawerList);}}




Android側滑菜單DrawerLayout的使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.