我有一个活动DrawerLayout.我可以通过两种不同的方式打开抽屉......通过从屏幕的左侧区域向右滑动并单击应用程序标题.我没有显示应用程序图标,只有标题.我完全按照Google推荐的方式实现了这一点:创建导航抽屉:使用应用程序图标打开和关闭
就打开和关闭抽屉本身而言,一切都是有用的.但是,它不显示DrawerLayout假设要使用的标准图标.相反,我得到常规的插入符号(看起来像一个不到标志).
只要我将应用程序图标添加回其中,ActionBar它就会按预期开始工作.抽屉打开或关闭时,抽屉布局图标会显示并设置动画.我已尝试在我的样式XML文件中以编程方式删除应用程序图标.
有没有办法让DrawerLayout图标工作在没有应用程序图标???
更新:我找到了一个解决方案,但它比解决方案更糟糕.我只是创建了1x1像素透明PNG(blank.png)并将其设置为我的styles.xml文件中的app图标.以下是所有相关代码:
styles.xml
<style name="MyCustomTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/MyCustomActionBar</item>
<item name="android:icon">@drawable/blank</item>
</style>
<style name="MyCustomActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:displayOptions">showHome|showTitle|homeAsUp</item>
</style>
Run Code Online (Sandbox Code Playgroud)
MainActivity - > onCreate()
this.navDrawerToggle = new ActionBarDrawerToggle
(
this,
this.navDrawerLayout,
R.drawable.icon_nav_drawer,
R.string.nav_drawer_open,
R.string.nav_drawer_closed
)
{
public void onDrawerClosed(View view) {}
public void onDrawerOpened(View drawerView) {}
};
Run Code Online (Sandbox Code Playgroud)
MainActivity - > onPostCreate()
super.onPostCreate(savedInstanceState);
this.navDrawerToggle.syncState();
Run Code Online (Sandbox Code Playgroud)
MainActivity - > onResume()
this.navDrawer.setOnItemClickListener(new DrawerItemClickListener());
this.navDrawerLayout.setDrawerListener(this.navDrawerToggle);
Run Code Online (Sandbox Code Playgroud)
MainActivity - > onPause()
this.navDrawer.setOnItemClickListener(null);
this.navDrawerLayout.setDrawerListener(null);
Run Code Online (Sandbox Code Playgroud)
MainActivity - …
我正在开发具有标签结构的应用程序,并使用滑动动作在标签中移动.
但现在,我想应用抽屉布局.问题是抽屉有滑动打开事件.我怎么能删除这个事件?我的想法是抽屉只能用按钮打开和关闭.这可能吗?谢谢!
我有Activity与DrawerLayout(其中包含左和右抽屉).我想知道我是否可以禁用特定碎片的右抽屉.
我已经读到了mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED),但它会锁定整个抽屉,我仍然需要左抽屉
基本上,我需要一个"选项"菜单,可以通过从左到右滑动屏幕(或点击屏幕左上角的选项按钮)来访问.我还需要它来覆盖屏幕,但不能完全替换它(它需要是半透明的,以便前面的菜单在它下面可见).到目前为止我所做的事情(我正在研究别人的代码,仍然没有解除所有这些,对于缺乏信息感到抱歉):
<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">
<!-- As the main content view, the view below consumes the entire
space available using match_parent in both dimensions. -->
<FrameLayout
android:id="@+id/content_frame"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<!-- android:layout_gravity="start" tells DrawerLayout to treat
this as a sliding drawer on the left side for left-to-right
languages and on the right side for right-to-left languages.
The drawer is given a fixed width in dp and extends the full height of
the container. A solid background is used for …Run Code Online (Sandbox Code Playgroud) 我正在实现工具栏和导航抽屉.我用我自己的视图定制了我的工具栏.我的工具栏中有我自己的菜单(汉堡)图标,用于打开导航抽屉,我在菜单图标(汉堡包)上显示徽章计数.所以我想隐藏默认的汉堡图标.
我试过这样的:
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false);
Run Code Online (Sandbox Code Playgroud)
请帮帮我.谢谢.
android navigation-drawer drawerlayout drawertoggle android-toolbar
现在我正在尝试将新的Design Support libary(22.2.1)中的DrawerLayout/NavigationView实现到我的应用程序中.我已经在互联网上搜索过,特别是在stackoverflow上如何将MenuItem添加到带有图标和标题的子菜单.我知道可以添加带有标题或图标的menuitem .
像那样:
Menu m = mNavigationView.getMenu();
m.add(R.id.groupID,R.id.menuItemID,orderNumber,"title");
Run Code Online (Sandbox Code Playgroud)
但这只是一个带有标题的MenuItem,没有Icon.是否可以添加带有标题和图标的MenuItem ?
我想锁定DrawerLayout的左右和左右滑动.
DrawerLayout drawerLayout;
Run Code Online (Sandbox Code Playgroud)
的onCreate:
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_OPEN);
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
Run Code Online (Sandbox Code Playgroud)
单击按钮打开drawerLayout:
drawerLayout.openDrawer(Gravity.LEFT);
Run Code Online (Sandbox Code Playgroud)
并关闭:
drawerLayout.closeDrawers();
Run Code Online (Sandbox Code Playgroud)
我在onCreate,onResume,onStart中尝试setDrawerLockMode但是没有工作,它仍然可以打开,关闭时滑动它.
编辑2:
它适用于:
android:layout_gravity="start"
而不是与:
android:layout_gravity="start|bottom"
Run Code Online (Sandbox Code Playgroud)
任何帮助.谢谢.
Android Studio 2.1.3
Run Code Online (Sandbox Code Playgroud)
我有这个设计我想跟随.
在第一个抽屉布局上,我有一个设置选项.
当用户点击时,它将打开第二个抽象布局,如下所示.
用户可以通过单击箭头返回到第一个Main Menu.
这可能吗?
非常感谢任何建议
任何人都知道如何实现这种类型的过渡.当我们打开Navagation抽屉全屏正在这样的动画.我也查看了驻留菜单,但这里的菜单预定义不是我想要的.
我也试过NavigationDrawer但没有成功.
drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
float moveFactor = (linearLayout.getWidth() * slideOffset);
float min = 0.9f;
float max = 1.0f;
float scaleFactor = (max - ((max - min) * slideOffset));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
{
linearLayout.setTranslationX(moveFactor);
linearLayout.setScaleX(scaleFactor);
linearLayout.setScaleY(scaleFactor);
}
else
{
AnimationSet animSet = new AnimationSet(true);
TranslateAnimation anim = new TranslateAnimation(lastTranslate, moveFactor, 0.0f, 0.0f);
anim.setDuration(0);
anim.setFillAfter(true);
animSet.addAnimation(anim);
ScaleAnimation scale = new ScaleAnimation(1.15f, 1.0f, 1.15f, 1.0f);
scale.setDuration(10);
scale.setFillAfter(true); …Run Code Online (Sandbox Code Playgroud) 我在我的应用程序中使用DrawerLayout.我使用NavigationView获取导航抽屉的内容,并使用下面的代码片段将其背景设置为透明.
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="start|center"
android:background="@android:color/transparent">
</android.support.design.widget.NavigationView>
Run Code Online (Sandbox Code Playgroud)
在三星s8 +当我打开抽屉时,它在末端显示一个垂直条.当我从NavigationView中删除透明度时进行调试时,我发现三星s8 +除了背景外还包含灰色条.当我在Red mi 3s上部署相同的代码时,它工作得很好,它只有一个背景.
请帮我删除这个垂直条.
android ×10
drawerlayout ×10
animation ×1
drawertoggle ×1
layout ×1
menuitem ×1
swipe ×1
xml ×1