drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

:暂无数据 2026-10-10 19:20:10 :0

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本篇文章给大家谈谈drawerlayout,以及android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕

现在侧滑菜单使用很多,大都是通过SlidingMenu实现。现在也可以通过DrawerLayout
创建抽屉布局
frament_content.xml
view plaincopy
《?xml version="1.0" encoding="utf-8"?》
***隐藏网址***
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" 》

《TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="25sp" /》

《/LinearLayout》
activity_main.xml
view plaincopy
***隐藏网址***
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" 》

《!-- The main content view --》

《FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" 》
《/FrameLayout》

《!-- The navigation view --》

《ListView
android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="#ffffcc"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp" 》
《/ListView》

《/android.support.v4.widget.DrawerLayout》
然后新建一个类继承Fragment类
view plaincopy
/**
* ContentFragment.java
* 版权所有(C) 2015
* 创建者:cuiran 2015-1-3 下午3:25:44
*/
package com.cayden.drawerlayoutdemo;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

/**
* TODO
* @author cuiran
* @version 1.0.0
*/
public class ContentFragment extends Fragment {

private TextView textView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_content, container, false);
textView = (TextView) view.findViewById(R.id.textView);

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

return view;
}

}
完成Activity代码
view plaincopy
package com.cayden.drawerlayoutdemo;

import java.util.ArrayList;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Intent;
import android.content.res.Configuration;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class MainActivity extends Activity implements OnItemClickListener {

private DrawerLayout mDrawerLayout;
private ListView mDrawerList;
private ArrayList《String》 menuLists;
private ArrayAdapter《String》 adapter;
private ActionBarDrawerToggle mDrawerToggle;
private String mTitle;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mTitle = (String) getTitle();

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.left_drawer);
menuLists = new ArrayList《String》();
for (int i = 0; i 《 5; i++)
menuLists.add("菜单0" + i);
adapter = new ArrayAdapter《String》(this,
android.R.layout.simple_list_item_1, menuLists);
mDrawerList.setAdapter(adapter);
mDrawerList.setOnItemClickListener(this);

mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, R.string.drawer_open,
R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActionBar().setTitle("请选择");
invalidateOptionsMenu(); // Call onPrepareOptionsMenu()
}

@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActionBar().setTitle(mTitle);
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);

//开启ActionBar上APP ICON的功能
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);

}

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
boolean isDrawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
menu.findItem(R.id.action_websearch).setVisible(!isDrawerOpen);
return super.onPrepareOptionsMenu(menu);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
//将ActionBar上的图标与Drawer结合起来
if (mDrawerToggle.onOptionsItemSelected(item)){
return true;
}
switch (item.getItemId()) {
case R.id.action_websearch:
Intent intent = new Intent();
intent.setAction("android.intent.action.VIEW");
***隐藏网址***
intent.setData(uri);
startActivity(intent);
break;
}
return super.onOptionsItemSelected(item);
}

@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
//需要将ActionDrawerToggle与DrawerLayout的状态同步
//将ActionBarDrawerToggle中的drawer图标,设置为ActionBar中的Home-Button的Icon
mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
@Override
public void onItemClick(AdapterView《?》 arg0, View arg1, int position,
long arg3) {
// 动态插入一个Fragment到FrameLayout当中
Fragment contentFragment = new ContentFragment();
Bundle args = new Bundle();
args.putString("text", menuLists.get(position));
contentFragment.setArguments(args);

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

mDrawerLayout.closeDrawer(mDrawerList);
}

}

SlidingPaneLayout和DrawerLayout的区别

1、SlidingPaneLayout只能定义一个侧滑面板,而且必须位于左侧;而DrawerLayout可定义两个侧滑面板,一个位于左侧,另一个位于右侧,当然如果你只定义一个侧滑面板也是可以的。
2、SlidingPaneLayout的侧滑面板在滑动时,主页面也跟着往右滑;而DrawerLayout的侧滑面板在滑动时,主页面是不会滑动的,也就是说,侧滑面板会遮盖住主页面的部分UI;
3、SlidingPaneLayout在主页面任何位置水平向右滑动,都会拉出左侧面板;而DrawerLayout只有在主页面左右边缘水平滑动时,才能拉出侧滑面板;
4、拉出侧滑面板时,SlidingPaneLayout主页面的灰色阴影较浅,不容易看到;而DrawerLayout主页面的灰色阴影较深,一下子就能看出来;

android drawerlayout能上下滑动么

drawerlayout本身不上下滑动,要添加ScrollView,ListView或者NavigationView.

DrawerLayout怎样实现全屏滑动

你可以重写drawerlayout里面的点击事件,不过如果你要是处于初级水平,而且没有充足的时间的话不建议你这样做,毕竟需要自定义控件。个人建议你用SlidingMenu,手机qq的那个侧滑就应该用的是这个,具体SlidingMenu的教程网上有很多,你可以随便找个demo学习一下

android drawerlayout被tablayout覆盖

首先,要使用该控件就需要添加design library,在android studio(还没有使用Android studio的小伙伴们要赶紧更换啦)中添加依赖
compile ‘com.android.support:design:22.2.0’
然后再布局文件中使用TabLayout
《android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentTop="true" /》12345
紧接着在下面添加ViewPager
《android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/tablayout" /》12345
布局文件完成了,接下来去定义ViewPager中的适配器,这里我使用的是Fragment,所以继承自FragmentPagerAdapter ,代码如下:
public class MyPageAdapter extends FragmentPagerAdapter {
ArrayList《Fragment》 datas;
ArrayList《String》 titles;
public CommunityPageAdapter(FragmentManager fm) {
super(fm);
}
public void setData(ArrayList《Fragment》 datas) {
this.datas = datas;
}
public void setTitles(ArrayList《String》 titles) {
this.titles = titles;
}
@Override
public Fragment getItem(int position) {
return datas == null ? null : datas.get(position);
}
@Override
public int getCount() {
return datas == null ? 0 : datas.size();
}
@Override
public CharSequence getPageTitle(int position) {
return titles == null ? null : titles.get(position);
}
}12345678910111213141516171819202122232425262728293031
适配器中需要两个数据集合,分配填充Fragment和显示的标题。
然后在需要使用的页面添加如下代码:
MyPageAdapter myPageAdapter = new MyPageAdapter(getFragmentManager());
ArrayList《Fragment》 datas = new ArrayList《Fragment》();
datas.add(new AFragment());
datas.add(new BFragment());
datas.add(new CFragment());
myPageAdapter.setData(datas);
ArrayList《String》 titles = new ArrayList《String》();
titles.add("A");
titles.add("B");
titles.add("C");
myPageAdapter.setTitles(titles);12345678910111213
现在适配器和数据已经准备好了,那么接下来就是要把数据放入ViewPager中,并使ViewPager和TabLayout相关联:
TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
// 将适配器设置进ViewPager
viewPager.setAdapter(myPageAdapter);
// 将ViewPager与TabLayout相关联
tabLayout.setupWithViewPager(viewPager);123456
关联之后运行发现,其实ViewPager由于预加载机制,导致每次都会提前加载下一个页面,如果页面的数据量大,那么这将会占用大量的内存,有什么办法可以只加载当前显示的页面呢看
通过查找相关资料发现,有一个方法setOffscreenPageLimit(int),该方法的作用是设置提前加载页面的数量,尝试使用viewPager.setOffscreenPageLimit(0);后发现无效。
继续查阅资料后发现,原来这是由于ViewPager的机制导致的,最少需要预加载一个页面,Requested offscreen page limit 0 too small; defaulting to 1,相关问题链接:
发现了可以完美解决该问题的方法:
在Fragment中有一个方法,setUserVisibleHint,该方法可以获取当前页面的展示情况
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// 页面正在展示,在这里加载你的数据
}else{
// 页面没有展示
}
}12345678910
基本到这一步功能已经实现了,但是,还有一些细节需要注意,到底ViewPager滑动的时候为什么会造成TabLayout的标题也随之更换呢看原来setupWithViewPager被调用的时候,执行了下面的代码
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(this));
this.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(viewPager));
到最后,还有一个问题,那么就是如果我们的标题有多条,导致超出了TabLayout的显示范围,这该如何解决呢看很简单,查阅官方API发现,TabLayout有一个方法是setTabMode,它是用来设置TabLayout的展示模式,而这个方法接受两个常量,MODE_SCROLLABLE 以及 MODE_FIXED,显而易见,当我们设置为MODE_SCROLLABLE 它就能自动根据标题的数量,滑动展示啦,功能到这里就完美实现了!

关于drawerlayout到此分享完毕,希望能帮助到您。

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本文编辑:admin

更多文章:


drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)

本篇文章给大家谈谈drawerlayout,以及android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年10月10日 19:20

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)

大家好,今天小编来为大家解答以下的问题,关于xor四位数怎么运算,单片机怎样用C语言实现4个数字间的异或这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 17:50

perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)

perl数组中最多的元素(用perl实现,得到一个数组中重复次数最多的元素)

其实perl数组中最多的元素的问题并不复杂,但是又很多的朋友都不太了解用perl实现,得到一个数组中重复次数最多的元素,因此呢,今天小编就来为大家分享perl数组中最多的元素的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧

2026年10月10日 17:00

oracle11g端口映射客户端频繁掉线(oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误)

oracle11g端口映射客户端频繁掉线(oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误)

各位老铁们好,相信很多人对oracle11g端口映射客户端频繁掉线都不是特别的了解,因此呢,今天就来为大家分享下关于oracle11g端口映射客户端频繁掉线以及oracle本地进行连接的时候报错ORA-12560: TNS: 协议适配器错误

2026年10月10日 16:10

html5不支持frameset(html5废标签)

html5不支持frameset(html5废标签)

“html5不支持frameset”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看html5不支持frameset(html5废标签)!

2026年10月10日 13:50

vb程序设计里面的x是啥(VB程序设计中的变量是如何定义的,请大家帮帮忙告诉我)

vb程序设计里面的x是啥(VB程序设计中的变量是如何定义的,请大家帮帮忙告诉我)

大家好,今天小编来为大家解答以下的问题,关于vb程序设计里面的x是啥,VB程序设计中的变量是如何定义的,请大家帮帮忙告诉我这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 10:40

java定时器每一分钟执行一次(java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现)

java定时器每一分钟执行一次(java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现)

大家好,今天小编来为大家解答以下的问题,关于java定时器每一分钟执行一次,java定时执行问题: 我想让一个Java代码在每小时的第25分钟执行一次的,这个怎么实现这个很多人还不知道,现在让我们一起来看看吧!

2026年10月10日 08:50

织梦行云泪眼彷徨(织梦行云代词版在那下 大侠)

织梦行云泪眼彷徨(织梦行云代词版在那下 大侠)

这篇文章给大家聊聊关于织梦行云泪眼彷徨,以及织梦行云代词版在那下 大侠对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月10日 07:10

安卓教程 app(安卓如何通知触发启动手机app)

安卓教程 app(安卓如何通知触发启动手机app)

大家好,安卓教程 app相信很多的网友都不是很明白,包括安卓如何通知触发启动手机app也是一样,不过没有关系,接下来就来为大家分享关于安卓教程 app和安卓如何通知触发启动手机app的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2026年10月10日 04:00

abap开发工作经历(目前,从事的是ABAP开发的不知道做这个有没有什么前途啊好的话,我会加分的~)

abap开发工作经历(目前,从事的是ABAP开发的不知道做这个有没有什么前途啊好的话,我会加分的~)

大家好,abap开发工作经历相信很多的网友都不是很明白,包括目前,从事的是ABAP开发的不知道做这个有没有什么前途啊好的话,我会加分的~也是一样,不过没有关系,接下来就来为大家分享关于abap开发工作经历和目前,从事的是ABAP开发的不知道

2026年10月10日 01:10

最近更新

drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026-10-10 19:20:10 浏览:0
b450支持什么内存(b450m内存)
2026-10-10 19:00:05 浏览:0
热门文章

打印机m7400(m7400打印机清零方法)
2026-08-29 07:50:01 浏览:4
acrobat各版本区别(Acrobat XI Pro与 Acrobat PRO DC什么区别)
2026-08-29 22:30:20 浏览:2
联想y510p怎么升级(联想y510p换cpu)
2026-08-17 03:30:04 浏览:2
标签列表