想做一个APP,设计中有侧边栏这个功能,所以现在开始学习下侧边栏的实现。

在官方的UI空间中已经给出了DrawerLayout这个侧滑的菜单空间。

因为在使用DrawerLayout的时候遇到了些问题,花了一天是时间才搞定,这里来记录一下,免得到时候自己在掉坑里。

1.主布局一定要是DrawerLayout

2.侧栏拉出来时,要点击空白栏关闭侧栏的话,一定要把空白栏设置为FrameLayout

先上个效果图吧:

好了,上代码:

activity_main.xml

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/drawer_layout"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"><!-- 内容栏--><FrameLayoutandroid:id="@+id/ly_content"android:layout_width="match_parent"android:layout_height="match_parent" /><!-- 侧滑栏--><ListViewandroid:id="@+id/list_left_drawer"android:layout_width="300dp"android:layout_height="match_parent"android:layout_gravity="start"android:background="#fff000"android:choiceMode="singleChoice"android:divider="#FFFFFF"android:dividerHeight="1dp" />
</android.support.v4.widget.DrawerLayout>

listView里面的布局 item_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"xmlns:app="http://schemas.android.com/apk/res-auto"><!-- 定义一个用于显示头像的ImageView --><ImageViewandroid:id="@+id/imgtou"android:layout_width="64dp"android:layout_height="64dp"android:baselineAlignBottom="true"android:paddingLeft="8dp" /><!-- 定义一个竖直方向的LinearLayout,把QQ呢称与说说的文本框设置出来 --><LinearLayoutandroid:id="@+id/new_line"android:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/name"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingLeft="8px"android:textColor="#1D1D1C"android:textSize="20sp" /><TextViewandroid:id="@+id/says"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingLeft="8px"android:textColor="#B4B4B9"android:textSize="14sp" /><TextViewandroid:id="@+id/time"android:layout_width="wrap_content"android:layout_height="wrap_content"android:paddingLeft="8px"android:textColor="#B4B4B9"android:textSize="14sp" /></LinearLayout></LinearLayout>

主程序MainActivity.java

package action.sun.com.testdraw2;import android.support.v4.app.FragmentManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener{private String[] names = new String[]{"Tom", "Jack", "Json"};private String[] says = new String[]{"111111,2222222", "33333333~", "444444444~"};private String[] times = new String[]{"1天前", "3天前~", "2天前~"};private int[] imgIds = new int[]{R.mipmap.ic_launcher, R.mipmap.ic_launcher, R.mipmap.ic_launcher};private DrawerLayout drawer_layout;private  ListView listView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d("1", "onCreate: xxxxxxxxxxxxxxx");drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout);List<Map<String, Object>> listitem = new ArrayList<Map<String, Object>>();for (int i = 0; i < names.length; i++) {Map<String, Object> showitem = new HashMap<String, Object>();showitem.put("touxiang", imgIds[i]);showitem.put("name", names[i]);showitem.put("says", says[i]);showitem.put("time", times[i]);listitem.add(showitem);}//创建一个simpleAdapterSimpleAdapter myAdapter = new SimpleAdapter(getApplicationContext(), listitem,R.layout.item_list, new String[]{"touxiang", "name", "says","time"},new int[]{R.id.imgtou, R.id.name, R.id.says, R.id.time});//ListView 容器listView = (ListView) findViewById(R.id.list_left_drawer);listView.setAdapter(myAdapter);listView.setOnItemClickListener(this);}//点击Item 显示在帧页面选择的Item值
    @Overridepublic void onItemClick(AdapterView<?> parent, View view, int position, long id) {Toast.makeText(MainActivity.this, "提示的内容", Toast.LENGTH_LONG).show();//关闭 侧边栏
        drawer_layout.closeDrawer(listView);}
}

到了现在,代码完了。

Android DrawLayout + ListView 的使用(一)相关推荐

  1. Android使用ListView控件问题

    Android使用ListView控件问题: The application has stopped unexpectedly, please try again. 开发环境:android 1.6 ...

  2. android 分组 listview,Android实现的ListView分组布局改进示例

    本文实例讲述了android实现的listview分组布局改进方法.分享给大家供大家参考,具体如下: 由于是在网上转载的一篇文章,在这里就不多说废话了,首先看一下最终的效果图: 然后是实现该listv ...

  3. Android实现ListView异步加载图片

    转: http://www.iteye.com/topic/685986 ListView异步加载图片是非常实用的方法,凡是是要通过网络获取图片资源一般使用这种方法比较好,用户体验好,下面就说实现方法 ...

  4. Android 利用ListView制作带竖线的多彩表格

    1.listview与GridView 其实Android本身是有表格控件(GridView)的,但是GridView的每一列的宽度被限定为一样宽,有时设计表格时,列宽不可能为同一宽度,所有可以用Li ...

  5. ym——Android之ListView性能优化

    转载请注明本文出自Cym的博客(http://blog.csdn.net/cym492224103),谢谢支持! Android之ListView性能优化 假设有看过我写过的15k面试题的朋友们一定知 ...

  6. 我的Android进阶之旅------Android二级ListView列表的实现

    实现如下图所示的二级列表效果 首先是在布局文件中,布局两个ListView,代码如下: <LinearLayout xmlns:android="http://schemas.andr ...

  7. Android 动态刷新listview中的数据

    之前一直困扰listview刷新后位置的问题,现在才明白,原来不能重新设置listview的adapter,而应该用notifyDataSetChanged()来刷新,这样位置就不会置顶. 下面做了一 ...

  8. android之ListView和adapter配合显示图片和文字列表

    listView页面布局:layout/activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.c ...

  9. android 之ListView总结(一个综合实例)

    实例效果: 后台逻辑: package com.hsj.example.paginationloadnetdatademo02;import android.graphics.Bitmap; impo ...

最新文章

  1. 「模型解读」深度学习网络只能有一个输入吗
  2. c++ 编译添加dll_linux下编写C/C++代码须知———串讲
  3. Qt Creator添加套件
  4. 写1行代码影响1000000000人,这是个什么项目?
  5. ureport2 + spring boot 搭建
  6. MySQL中的float和decimal类型有什么区别
  7. 市场调研思维导图模板
  8. Xiaojie雷达之路---匹配滤波器
  9. [转]java代码混淆以及及IDEA中springboot使用Allatori进行混淆
  10. 【产业互联网周报】AWS 全球换帅,中国区发布战略;杨杰回应回A,中移动计划千亿投5G;全球缺芯潮持续...
  11. 最小二乘估计-LSE(Least Square Estimate)
  12. VTK:线宽用法实战
  13. 微信开放平台申请流程讲解与注意事项(未完待续)
  14. ES6 模板字符串基本用法
  15. springboot房屋租赁合同报修系统java-ssm
  16. 生鲜配送app开发方案
  17. 华为机试-拼音翻译成阿拉伯数字
  18. 计算机团体及知名科学家,2019年度ACM杰出科学家!拿下华人数学领域最高荣誉的上财陆品燕教授,又拿奖啦!...
  19. 如何理解答案-Leo读提问的智慧(4)
  20. BAPI_GOODSMVT_CREATE MIGO预留成本中心201发货实例

热门文章

  1. opensuse download
  2. 半木下低风险交易-1
  3. 域名缓存侦测(DNS Cache Snooping)技术
  4. Highmaps网页图表教程之下载Highmaps与Highmaps的地图类型
  5. java iostream_【JAVA】IOStream
  6. php图片自动裁剪工具,php图片自动裁剪工具,解决图片变形问题,缩略图问题
  7. c java 开发android_java代码与纯C代码混编完成android应用的开发
  8. oracle 两层table of,ORACLE中嵌套表的基本知识
  9. ICA处理脑电资料汇总
  10. 如何正确有效表达:对不起,我们已经尽力了?