Android 側(cè)滑菜單之 DrawerLayout 的使用

? ? ? ? DrawerLayout是谷歌官方提供的,用于實(shí)現(xiàn)側(cè)滑菜單的一種抽屜式布局。

? ? ? ? 本文主要介紹DrawerLayout的簡(jiǎn)單使用。

? ? ? ? 詳細(xì)代碼:github.com/Baolvlv/LearnAndroid/tree/master/DrawerLayoutUsing

1.基本介紹

DrawerLayout,谷歌官方提供,實(shí)現(xiàn)側(cè)滑菜單,抽屜布局

2.創(chuàng)建抽屜布局

將根布局改為DrawerLayout,設(shè)置命名空間,id與寬高

xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/drawer_layout"

android:layout_height="match_parent"

android:layout_width=“match_parent">

設(shè)置抽屜隱藏時(shí)的主內(nèi)容布局,F(xiàn)rameLayout(運(yùn)行時(shí)由fragment填充)

android:id="@+id/content_frame"

android:layout_width="match_parent"

android:layout_height="match_parent">

設(shè)置左側(cè)抽屜式導(dǎo)航欄,ListView

設(shè)置id與寬高

android:id="@+id/left_drawer"

android:layout_width="240dp"

android:layout_height=“match_parent"

設(shè)置layout_gravity為start,即從左向右滑出,如果為end,即為從右向左滑出

android:layout_gravity="start"

設(shè)置背景為米白色:

android:background=“#ffffcc"

設(shè)置為單選

android:choiceMode=“singleChoice"

通過(guò)設(shè)置分割線顏色透明,寬度為0,使分割線不可見(jiàn)

android:divider="@android:color/transparent"

android:dividerHeight=“0dp">

注意事項(xiàng):

1.主內(nèi)容視圖是DrawerLayout的第一個(gè)子視圖

2.主內(nèi)容視圖的寬度和高度匹配父視圖

3.設(shè)置layout_gravity屬性為start,不推薦使用left

4.抽屜視圖寬度以dp為單位,不超過(guò)320dp

2.初始化抽屜式導(dǎo)航列表

初始化DrawerLayout和ListView,通過(guò)ArrayList儲(chǔ)存list中的條目,通過(guò)Adapter傳給ListView

mDrawerLayout= (DrawerLayout) findViewById(R.id.drawer_layout);

mDrawList= (ListView) findViewById(R.id.left_drawer);

menuLists=newArrayList<>();

for(inti =0;i<5;i++){

menuLists.add("baolvlv"+i);

}

adapter=newArrayAdapter(this,

android.R.layout.simple_list_item_1,menuLists);

mDrawList.setAdapter(adapter);

新建contentFragment,繼承自fragment,作為填充frameLayout的fragment,同時(shí)創(chuàng)建布局資源文件,重寫(xiě)onCreateView方法

publicViewonCreateView(LayoutInflater inflater,@NullableViewGroup container,@NullableBundle savedInstanceState) {

View view = inflater.inflate(R.layout.fragment_content,container,false);

textView= (TextView) view.findViewById(R.id.text);

//獲得參數(shù),設(shè)置為textView的text的值

String text = getArguments().getString("text");

textView.setText(text);

returnview;

}

為側(cè)邊欄抽屜設(shè)置事件監(jiān)聽(tīng)器,主Activity實(shí)現(xiàn)onItemClickListener

mDrawList.setOnItemClickListener(this);

重寫(xiě)onItemClick方法,執(zhí)行點(diǎn)選后的操作

@Override

public voidonItemClick(AdapterView parent,View view, intposition, longid) {

//動(dòng)態(tài)插入一個(gè)fragment到FrameLayout當(dāng)中

Fragment contentFragment =newContentFragment();

//將點(diǎn)選的item作為參數(shù),通過(guò)Bundle傳遞給fragment

Bundle args =newBundle();

args.putString("text",menuLists.get(position));

contentFragment.setArguments(args);

//替換當(dāng)前fragment為新的fragment

FragmentManager fm = getSupportFragmentManager();

fm.beginTransaction().replace(R.id.content_frame,contentFragment).commit();

//點(diǎn)選之后關(guān)閉左側(cè)的抽屜

mDrawerLayout.closeDrawer(mDrawList);

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,366評(píng)論 25 708
  • 一:打開(kāi)Android Studio中項(xiàng)目app目錄下的buile.gradle,檢查是否有v7包,如果沒(méi)有,添加...
    萱生活閱讀 809評(píng)論 0 0
  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程,因...
    小菜c閱讀 7,391評(píng)論 0 17
  • 01.我想和你做知己 大二那年,阿貍跟著爸媽跑去海南過(guò)春節(jié)。作為一北方大妞,沒(méi)怎么見(jiàn)過(guò)大海的她對(duì)這場(chǎng)旅行格外的...
    嘚瑟喬閱讀 1,149評(píng)論 1 2
  • 科學(xué)宮校區(qū) ?班級(jí): 【星期六1-2pm。學(xué)員:陳學(xué)睿,黃獻(xiàn)瑞,王靖越,于世龍,李千禾。教師:郭彤宇】 ?教學(xué)目標(biāo)...
    lego_april閱讀 624評(píng)論 0 0

友情鏈接更多精彩內(nèi)容