【安卓筆記】抽屜式布局----DrawerLayout


效果例如以下:

DrawerLayout來自support.v4包,所以不用考慮兼容性問題。其次,這樣的布局類似風靡一時的側滑菜單,可是比側滑菜單輕巧很多。
以下介紹這樣的布局的使用方式。
1.在你的項目中導入support.v4包。
2.編輯一個布局,根節點為android.support.v4.widget.DrawerLayout,此節點下僅僅同意有兩個子節點,第一個為將來主頁面的內容,第二個節點即為"抽屜"內容,一般是一個ListView。比方:

<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" >
    <LinearLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈"
            android:textColor="#000"
            android:textSize="20sp" />
        <Button
            android:id="@+id/but_open"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="開啟抽屜" />
    </LinearLayout>
    <!-- 一定要加 layout_gravity="start" -->
    <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>
3.編寫代碼,監聽相關事件:
package com.example.drawerlayoutdemo1;
import android.app.Activity;
import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
public class MainActivity extends Activity
{
	protected static final String TAG = "MainActivity";
	private DrawerLayout mDrawerLayout = null;
	private ListView lv = null;
	private Button but_open = null;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
		lv = (ListView) findViewById(R.id.left_drawer);
		but_open = (Button) findViewById(R.id.but_open);
		but_open.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				mDrawerLayout.openDrawer(Gravity.LEFT);
			}
		});
		lv.setAdapter(new ArrayAdapter<String>(this,R.layout.test,R.id.tv_item,new String[]{"條目1","條目2","條目3"}));
		mDrawerLayout.setDrawerListener(new DrawerLayout.SimpleDrawerListener()
		{
			@Override
			public void onDrawerClosed(View drawerView)
			{
				Log.i(TAG,"抽屜關閉了...");
			}
			@Override
			public void onDrawerOpened(View drawerView)
			{
				Log.i(TAG,"抽屜打開了...");
			}
			@Override
			public void onDrawerSlide(View drawerView, float slideOffset)
			{
				Log.i(TAG,"抽屜在滑動...");
			}
			@Override
			public void onDrawerStateChanged(int newState)
			{
				switch (newState)
				{
				case DrawerLayout.STATE_DRAGGING:
					Log.i(TAG,"拖動狀態");
					break;
				case DrawerLayout.STATE_IDLE:
					Log.i(TAG,"精巧狀態");
					break;
				case DrawerLayout.STATE_SETTLING:
					Log.i(TAG,"設置狀態");
					break;
				default:
					break;
				}
			}
		});
		lv.setOnItemClickListener(new OnItemClickListener()
		{
			@Override
			public void onItemClick(AdapterView<?

> parent, View view, int position, long id) { switch (position) { case 0: Log.i(TAG,"條目1被點擊"); break; case 1: Log.i(TAG,"條目2被點擊"); break; case 2: Log.i(TAG,"條目3被點擊"); break; } } }); } }












免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM