您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關怎么在Android中利用DrawerLayout實現一個雙向側滑菜單,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
布局文件的代碼:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="45dp" android:background="#00ff00" > <Button android:id="@+id/btn_toggle_left" android:layout_width="wrap_content" android:layout_height="50dp" android:text="左開關" /> <Button android:layout_alignParentRight="true" android:id="@+id/btn_toggle_right" android:layout_width="wrap_content" android:layout_height="50dp" android:text="右開關" /> </RelativeLayout> <android.support.v4.widget.DrawerLayout android:id="@+id/drawerlayout" android:layout_width="fill_parent" android:layout_height="fill_parent" > <!-- 主布局,位于DrawerLayout的第一次子控件,位置不可以放錯 --> <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/mainbackground" /> </FrameLayout> <!-- 左側菜單 --> <RelativeLayout android:id="@+id/layout_menu_left" android:layout_gravity="start" android:layout_width="150dp" android:layout_height="fill_parent" android:background="#000" > <TextView android:textColor="#ffffff" android:gravity="center" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="左側菜單" /> </RelativeLayout> <!-- 右側菜單 --> <RelativeLayout android:id="@+id/layout_menu_right" android:layout_gravity="end" android:layout_width="150dp" android:layout_height="fill_parent" android:background="#000" > <TextView android:textColor="#ffffff" android:gravity="center" android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="右側菜單" /> </RelativeLayout> </android.support.v4.widget.DrawerLayout> </LinearLayout>
MainActivity的代碼:
public class MainActivity extends Activity implements OnClickListener{ private DrawerLayout mDrawerLayout; private View v_menu_left,v_menu_right; private Button btn_left,btn_right; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); initListener(); } private void initListener() { btn_left.setOnClickListener(this); btn_right.setOnClickListener(this); } private void initView() { mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout); v_menu_left = findViewById(R.id.layout_menu_left); v_menu_right = findViewById(R.id.layout_menu_right); btn_left = (Button) findViewById(R.id.btn_toggle_left); btn_right = (Button) findViewById(R.id.btn_toggle_right); } @Override public void onClick(View v) { if(v.getId()==R.id.btn_toggle_left){ toggleLeft(); }else if(v.getId()==R.id.btn_toggle_right){ toggleRight(); } } private void toggleRight() { if(mDrawerLayout.isDrawerOpen(v_menu_right)){ mDrawerLayout.closeDrawer(v_menu_right); }else{ mDrawerLayout.openDrawer(v_menu_right); } } private void toggleLeft() { if(mDrawerLayout.isDrawerOpen(v_menu_left)){ mDrawerLayout.closeDrawer(v_menu_left); }else{ mDrawerLayout.openDrawer(v_menu_left); } } }
??在布局文件中,第一個子控件是主布局,就是顯示在界面中央的位置,然后第二個和第三個控件作為左菜單和右菜單在兩側隱藏,然后滑動的時候慢慢顯示出來。在第二和第三個控件的屬性設置里,需要注意的是android:layout_gravity屬性,這個屬性決定了菜單的位置是左還是右。當設置成“start”的時候,菜單位于左側,當設置成“end”的時候,菜單位于右側,所以菜單的位置和控件的順序沒有關系,只和屬性值有關。
??然后在MainActivity里面,我們得到DrawerLayout 對象,和兩個菜單對象,對按鈕添加點擊方法。拿左菜單來說,當點擊按鈕的時候,如果左菜單是關閉的,那么我們就打開菜單,如果菜單是打開的,那么我們就關閉它。這就需要知道DrawerLayout的幾個常用方法了。
isDrawerOpen(View v)
該方法用來判斷菜單是否處于打開狀態,傳入的是一個View,表示菜單的View,也就是左菜單或者是右菜單。因為菜單的數量有一個或者以上,所以需要傳入不同的View來判斷是哪一個菜單。
closeDrawer(View v)
該方法用來關閉菜單,傳入的也是菜單的View
openDrawer(View v)
該方法用來打開菜單,同關閉菜單的操作相似。
關于怎么在Android中利用DrawerLayout實現一個雙向側滑菜單就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。