Android 抽屜布局

  目前部分APP使用一種類似抽屜式的布局,像QQ那種,感覺很炫,自己也一直想做一個像那樣的布局,(ps網上很多這樣的例子,我下面做的就是參考網上的改變的)

  廢話不就不說了,直接上代碼

  1、首先建立一個布局文件activity_drawer.xml?

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:paddingBottom="@dimen/activity_vertical_margin"
 6     android:paddingLeft="@dimen/activity_horizontal_margin"
 7     android:paddingRight="@dimen/activity_horizontal_margin"
 8     android:paddingTop="@dimen/activity_vertical_margin"
 9     tools:context=".DrawerActivity">
10     <android.support.v4.widget.DrawerLayout<!--重點在這里-->
11         android:id="@+id/drawer_layout"
12         android:layout_width="match_parent"
13         android:layout_height="match_parent">
14             <FrameLayout
15                 android:id="@+id/content_frame"
16                 android:layout_width="match_parent"
17                 android:layout_height="match_parent">
18                 <Button
19                     android:id="@+id/btn"
20                     android:layout_width="wrap_content"
21                     android:layout_height="wrap_content"
22                     android:text="打開"
23                     android:layout_alignParentTop="true"
24                     android:layout_alignParentLeft="true"
25                     android:layout_alignParentStart="true"
26                     android:layout_alignParentRight="true"
27                     android:layout_alignParentEnd="true" />
28             </FrameLayout>
29             <ListView
30                 android:id="@+id/left_drawer"
31                 android:layout_width="200dp"
32                 android:layout_height="match_parent"
33                 android:layout_gravity="start"
34                 android:background="#ff349710"
35                 android:choiceMode="singleChoice"
36                 android:dividerHeight="0dp"
37                 android:layout_marginTop="30dp"
38                />
39     </android.support.v4.widget.DrawerLayout>
40 </RelativeLayout>

  2.對應的Activity文件DrawerActivity.java

 1 public class DrawerActivity extends Activity {
 2     public static final String[] str = new String[]{"東部", "西部", "南部", "北部", "中部",
 3             "東南部", "西北部", "西南部", "東北部", "中西部", "中南部", "中北部"};
 4     private DrawerLayout mDrawerLayout = null;
 5     private ListView mlistView;
 6     @Override
 7     protected void onCreate(Bundle savedInstanceState) {
 8         super.onCreate(savedInstanceState);
 9         setContentView(R.layout.activity_drawer);
10 
11         mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
12         mlistView = (ListView) findViewById(R.id.left_drawer);
13 
14         
15         //下面兩種方式都可以,后者要多建立一個value的array文件
16         mlistView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,str));
17         //mlistView.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,getResources().getStringArray(R.array.planets_array)));
18         Button button = (Button) findViewById(R.id.btn);
19         button.setOnClickListener(new View.OnClickListener() {
20 
21             @Override
22             public void onClick(View v) {
23                 // 按鈕按下,將抽屜打開
24                 mDrawerLayout.openDrawer(Gravity.LEFT);
25                 //mDrawerLayout.closeDrawers();//可以不監聽,默認點擊其他地方即可關閉
26                 //adapter.notifyDataSetChanged();
27             }
28         });
29         //列表控件監聽
30         mlistView.setOnItemClickListener(new DrawerItemClickListener());
31     }
32 
33     private class DrawerItemClickListener implements ListView.OnItemClickListener {
34         @Override
35         public void onItemClick(AdapterView parent, View view, int position, long id) {
36             selectItem(position);
37         }
38     }
39     //簡單輸出一些信息
40     private void selectItem(int position) {
41         new AlertDialog.Builder(this)
42                 .setTitle("打開")
43                 .setMessage("打開的位置是:"+position+"\n位置的值是:"+str[position])
44                 .setPositiveButton("確定", new DialogInterface.OnClickListener() {
45                     @Override
46                     public void onClick(DialogInterface dialogInterface, int i) {
47                     //監聽事件
48                     }
49                 }).show();
50     }
51 }

  3.簡單效果如下:

?

  這僅僅是實現了效果,關于為什么待我研究透徹了再分享。

轉載于:https://www.cnblogs.com/hais/p/4710212.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/256911.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/256911.shtml
英文地址,請注明出處:http://en.pswp.cn/news/256911.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

學習筆記(35):Python網絡編程并發編程-協程(yield,greenlet,gevent模塊)

立即學習:https://edu.csdn.net/course/play/24458/296457?utm_sourceblogtoedu 協程&#xff08;yield,greenlet,gevent&#xff09; 1.協程&#xff1a;在單線程中通過不斷地在多個任務之間進行切換執行&#xff0c;來達到并發的效果的線程&#xff0c;可以提高效率 2.yiel…

雙目標定算法

坐標系基礎知識&#xff1a; > 1.1. 從像素坐標系(u,v) 到 世界坐標系(Xw,Yw,Yw) 這里直接拿上篇博文的結果&#xff0c;中間省去了其它坐標系直接的關系&#xff0c;直接給出&#xff0c;如下所示&#xff1a; 公式如下&#xff1a; > 1.2. 符號規定( Notation ) 為了…

Spring bean三種創建方式

spring共提供了三種實例化bean的方式&#xff1a;構造器實例化(全類名&#xff0c;反射)、工廠方法&#xff08;靜態工廠實例化 動態工廠實例化&#xff09;和FactoryBean &#xff0c;下面一一詳解&#xff1a; 1、構造器實例化 City.java 1 package com.proc.bean;2 3 publ…

Excel使用控件創建動態地圖圖表

[本文軟件Excel 2010] 效果圖&#xff1a; 首先我們看一下數據源 數據源中第二列是對應圖形的名稱。首先創建圖形&#xff0c;我們可能在網絡中找到各個地圖的矢量圖形。不過不是每個地圖圖形都適合我們&#xff0c;或許企業劃分非按照行政區劃分。因此可以嘗試自己繪制&#x…

Windows 10 常用的快捷鍵及常用指令

系統快捷鍵 快捷鍵功能說明備注CtrlShiftEsc打開任務管理器macbook: fnshiftF11普通鍵盤: PrintScreen截屏幕圖macbook: fnshiftoptionF11普通鍵盤: altPrintScreen截取當前窗口圖片macbook: WinfnEsc普通鍵盤: WinPause/Break打開系統屬性WinctrlD新建虛擬桌面Windows 10Winct…

學習筆記(35續):Python網絡編程并發編程-基于gevent及線程池實現的并發套接字通訊

1.基于線程池實現并發套接字通訊&#xff1a;因為套接字涉及地是I/O密集模型&#xff0c;因此使用多線程會有高效率 服務器 #基于線程池完成并發的套接字通訊 from socket import * from threading import Thread from concurrent.futures import ThreadPoolExecutordef commun…

使用Configuration Manager部署及管理軟件更新(2)

承接上一篇文章&#xff1a;http://ericxuting.blog.51cto.com/8995534/1543835 一、 確定軟件更新符合性 1. 打開Configuration Manager管理控制臺&#xff0c;點擊軟件庫&#xff0c;展開軟件更新&#xff0c;點擊所有軟件更新 2. 點擊主頁中的運行摘要&#xff0c;等待對話框…

NULL、nil、Nil、NSNull的區別

標志值含義NULL&#xff08;void *&#xff09;0C指針的字面零值nil&#xff08;id&#xff09;0Objecve-C對象的字面零值Nil&#xff08;Class&#xff09;0Objecve-C類的字面零值NSNull[NSNull null]用來表示零值的單獨的對象轉載于:https://www.cnblogs.com/wlsxmhz/p/56250…

Fiddler 域名過濾

原來一直沒意識到Fiddler過濾&#xff0c;導致每次抓包都要自己判斷、搜索好多東西&#xff0c;真是呵呵&#xff01; 過濾設置很簡單&#xff0c;看懂一張圖就解決問題了。 箭頭 那兩處設置下&#xff0c;圓圈處保存再進行抓包即可 轉載于:https://www.cnblogs.com/eejron/p/4…

windows中VS卸載opencv配置,重新安裝其他版本

1、找到工程的屬性管理器&#xff0c;電機Debug64和Release64下面的 包含目錄和庫目錄&#xff0c;刪掉其原由配置的oepncv路徑&#xff1b; 找到鏈接器中的附加依賴項&#xff0c;刪掉原有的配置&#xff1b;

學習筆記(36):Python網絡編程并發編程-IO模型介紹

立即學習:https://edu.csdn.net/course/play/24458/296460?utm_sourceblogtoedu I/O模型介紹&#xff1a;I/O模型表示處于等待狀態的模型&#xff0c;如套接字通訊的accept和recv函數一樣 1.同步I/O 2.異步I/O 3.阻塞I/O 4.非阻塞I/O

AD9 如何畫4層pcb板

新建的PCB文件默認的是2層板&#xff0c;教你怎么設置4層甚至更多層板。在工具欄點擊Design-->Layer Stack Manager.進入之后顯示的是兩層板&#xff0c;添加為4層板&#xff0c;一般是先點top layer, 再點Add Layer,再點Add Layer&#xff0c;這樣就成了4層板。見下圖。 有…

gulp 流處理

包含的內容&#xff1a; 穿插流流合并流隊列流篩選1. 穿插流// passthrough stream 把流傳遞給其他的// usegulp.src(glob,{passthrough:true})// function 進行流的合并處理&#xff0c;避免多余配置以及冗余代碼 2. 合并流// 使用merge2// install yarn add merge2 or …

windows上使用cmake 編譯yaml-cpp源碼,生成yam-cpp.lib

1、打開cmake-gui 2、添加CmakeList 3、建立build 4、進入工程中生成debug和release版本的lib

BZOJ 3039: 玉蟾宮( 懸線法 )

最大子矩陣...懸線法..時間復雜度O(nm)懸線法就是記錄一個H向上延伸的最大長度(懸線), L, R向左向右延伸的最大長度, 然后通過遞推來得到. ------------------------------------------------------------------#include<bits/stdc.h>using namespace std;#define ok(c) …

學習筆記(37):Python實戰編程-yield實現生成器

立即學習:https://edu.csdn.net/course/play/19711/255579?utm_sourceblogtoedu1.yield return generator yield是一個返回的是一個生成器對象&#xff0c;是通過next函數一次一次地進行函數地迭代來獲取結果的&#xff0c;而return函數則是將結果返回后&#xff0c;不再與…

ie6、7 下input的邊框問題 ?

input的border設置為none,ie8及以上border都兼容&#xff0c;ie6和7的border還繼續存在&#xff0c;將border設為0時所有瀏覽器上都不存在了&#xff0c;但是border為0時還是會繼續的渲染。 將input的border設為"0 none",ie7及以上都正常了&#xff0c;但是ie6上inpu…

Mocha BSM產品亮點——關聯事件分析

業務需求與挑戰企業經常會遇到下列場景&#xff1a;? 企業某應用&#xff0c;例如&#xff0c;WebSphere Portal Server&#xff0c;已經不可用&#xff0c;是由于應用自身已不可用&#xff1f;還是應用所連接的數據庫出了問題&#xff1f;還是應用的LDAP服務不可用&#xff1…

輕量級文本編輯器,Notepad最佳替代品:Notepad++

目錄 正文之前1. 目的2. 原帖3. 為何推薦Notepad3.1. Notepad的一些基本特點3.2. notepad&#xff0c;notepad2&#xff0c;notepad&#xff0c;ultraEdit比較4. 使用Notepad前要了解的知識4.1. Notepad的名稱和縮寫4.2. Notepad修改設置后&#xff0c;立即生效4.3. Notepad的版…

學習筆記(38):Python實戰編程-窗體顯示

立即學習:https://edu.csdn.net/course/play/19711/343100?utm_sourceblogtoedu GUI&#xff1a;圖形用戶接口——GUI組件&#xff0c;組件定義&#xff0c;組件布局管理 主體窗口的設置&#xff1a; import tkinter#導入創建窗體的相關模塊class Mainwindow():#創建窗口類de…