所以现在Android 5.0发布了,我想知道如何实现动画操作栏图标.
这个库在这里实现它很好但是因为appcompat v7库有它如何实现它?
该库在themes.xml中引用它
<item name="drawerArrowStyle">@style/Widget.AppCompat.DrawerArrowToggle</item>
Run Code Online (Sandbox Code Playgroud)
在这种风格下
<style name="Base.V7.Theme.AppCompat" parent="Platform.AppCompat">
Run Code Online (Sandbox Code Playgroud)
UPDATE
我使用v7 DrawerToggle实现了这个功能.但是我无法设计它.请帮忙
我在v7 styles_base.xml中找到了它的样式
<style name="Base.Widget.AppCompat.DrawerArrowToggle" parent="">
<item name="color">?android:attr/textColorSecondary</item>
<item name="thickness">2dp</item>
<item name="barSize">18dp</item>
<item name="gapBetweenBars">3dp</item>
<item name="topBottomBarArrowSize">11.31dp</item>
<item name="middleBarArrowSize">16dp</item>
<item name="drawableSize">24dp</item>
<item name="spinBars">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我把它添加到我的样式中并且没有用.也添加到我的attr.xml
<declare-styleable name="DrawerArrowToggle">
<!-- The drawing color for the bars -->
<attr name="color" format="color"/>
<!-- Whether bars should rotate or not during transition -->
<attr name="spinBars" format="boolean"/>
<!-- The total size of the drawable -->
<attr name="drawableSize" format="dimension"/>
<!-- The max gap …
Run Code Online (Sandbox Code Playgroud) android android-appcompat android-actionbar drawertoggle android-5.0-lollipop
因此,当导航抽屉开始打开时,我有要隐藏的标签.我完成打开时隐藏了它们的代码,但这不是我想要的.
mDrawerToggle = new ActionBarDrawerToggle(
this,
mDrawerLayout,
R.drawable.ic_drawer,
R.string.drawer_open,
R.string.drawer_close
) {
@Override
public void onDrawerClosed(View view) {
invalidateOptionsMenu();
setActionBarMode(ActionBar.NAVIGATION_MODE_TABS);
}
@Override
public void onDrawerOpened(View drawerView) {
invalidateOptionsMenu();
setActionBarMode(ActionBar.NAVIGATION_MODE_STANDARD);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
Run Code Online (Sandbox Code Playgroud)
这是我试过的:
onClickListener
为mDrawerLayout
.onClick
永远不会被召唤onTouchListener
为mDrawerLayout
.onTouch
永远不会被召唤ActionBarDrawerToggle
和DrawerLayout
课程.找不到类似的东西onDrawerStartedOpening
.我使用android.support.v7.widget.Toolbar与android.support.v4.widget.DrawerLayout.它工作正常,导航抽屉关闭时显示汉堡图标,抽屉打开时显示箭头图标.我想在应用程序中的某些事件中禁用抽屉并将Burger图标设置为箭头.我试图将锁定模式设置为关闭,但v7.app.ActionBarDrawerToggle仍显示Burger并打开抽屉.
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
有任何想法吗?谢谢!
更新:
不,我可以更改图标的状态,我可以启用/禁用抽屉,但动画不能使用此方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
...
Toolbar toolbar = (Toolbar) findViewById(R.id.application_toolbar);
setSupportActionBar(toolbar);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.string1, R.string.string2) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
}
};
//mDrawerLayout.setDrawerListener(mDrawerToggle); // not needed
...
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
if (mDrawerLayout.getDrawerLockMode(GravityCompat.START) == LOCK_MODE_UNLOCKED) {
showDrawer();
} else {
handleBackButtonPress(); // On this stage the home button is …
Run Code Online (Sandbox Code Playgroud) 我正在努力工作的工具栏和抽屉.我正在尝试将汉堡切换为箭头,当我向后台堆叠添加新片段但是没有办法做到这一点.
也许我错过了一些东西,但我找不到办法.有人有同样的问题吗?
这是声明:
mDrawerToggle = new ActionBarDrawerToggle(
getActivityCompat(), /* host Activity */
mDrawerLayout, /* DrawerLayout object */
((BaseActivity) getActivityCompat()).getToolbar(),
R.string.navigation_drawer_open, /* "open drawer" description for accessibility */
R.string.navigation_drawer_close /* "close drawer" description for accessibility */
)
Run Code Online (Sandbox Code Playgroud)
这是我将一个片段添加到后栈时调用的函数
public void setToggleState(boolean isEnabled) {
if (mDrawerLayout == null)
return;
if (isEnabled) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
mDrawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_UNLOCKED);
} else {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
mDrawerToggle.onDrawerStateChanged(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
}
mDrawerToggle.syncState();
}
Run Code Online (Sandbox Code Playgroud) 我的操作栏初始化我的图标有一个简单的问题.我使用的是Android SDK 5,因为android.support.v4.app.ActionBarDrawerToggle;
我已弃用,我导入了v7支持并用以下内容替换了我的导入:android.support.v7.app.ActionBarDrawerToggle;
即与v7相同的包.
现在,当我初始化我的ActionBarDrawerToggle对象以关联DrawerLayout
从我导入的对象:import android.support.v4.widget.DrawerLayout;
我被迫删除一个参数,这似乎没问题(虽然不知道为什么!).但是我的图标没有进入我的ActionBar.这是我的ActionBarDrawerToggle对象的初始化:
mActionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
R.drawable.ic_drawer, R.string.drawer_open) {
/** Called when a drawer has settled in a completely closed state. */
@Override
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
/** Called when a drawer has settled in a completely open state. */
@Override
public void onDrawerOpened(View view) {
super.onDrawerOpened(view);
invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
}
};
Run Code Online (Sandbox Code Playgroud)
我的资源中有图像 R.drawable.ic_drawer
我似乎无法找到为什么我的图标没有出现在v7中.
PS代码工作得非常好,事实上,当我切换回v4导入并为切换对象初始化添加额外的参数(不得不裸露与丑陋的不赞成交叉线)时,图标出现但不在v7中. …
我想将Uber这样的导航抽屉实现到iOS(swift)中.我将通过使用名为KYDrawerController的库来实现它.https://github.com/ykyouhei/KYDrawerController
但是,它不能提供切换按钮,只能滑动动作.以为我想实现显示导航抽屉的切换按钮,我不知道如何将这样的功能添加到库中.如果您知道如何将函数添加到库中,或者如何以其他方式实现我的目的(例如使用其他库),请告诉我.谢谢你的好意.
我目前正在更新Fragment
为导向的应用程序(我有一个Activity
用FrameLayout
容器作为主机为我所有Fragment
或多个)材料设计.我想在替换时将汉堡图标设置为后箭头的动画Fragment
.
基本上,如果这个不够清楚,这就是我想要实现的目标.我不想使用这个库(MaterialMenu),我想使用官方的AppCompat
lib来扩展可能.
由于这个解决方案,我实现了这个效果,但我无法弄清楚如何在更换ActionBarDrawerToggle
时作为后退按钮Fragment
.
所以我的问题是:如果后面的箭头图标仍然是替换ActionBarDrawerToggle
后的那个图标Fragement
吗?在这种情况下,我如何覆盖它,以便它的作用onBackPressed()
而不是打开抽屉?我已经尝试了这个,但它不起作用:
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case android.R.id.home:
getActivity().onBackPressed();
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
android android-appcompat navigation-drawer drawertoggle android-5.0-lollipop
我正在实现工具栏和导航抽屉.我用我自己的视图定制了我的工具栏.我的工具栏中有我自己的菜单(汉堡)图标,用于打开导航抽屉,我在菜单图标(汉堡包)上显示徽章计数.所以我想隐藏默认的汉堡图标.
我试过这样的:
getSupportActionBar().setDisplayHomeAsUpEnabled(false);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(false);
Run Code Online (Sandbox Code Playgroud)
请帮帮我.谢谢.
android navigation-drawer drawerlayout drawertoggle android-toolbar
我在Android应用程序中使用导航抽屉,工作正常.
我想补充一些动画的打开和关闭的抽屉式导航栏.
动画:
1.Opening-Navigation Drawer显示箭头,隐藏汉堡包.
2.Closing-Again显示汉堡包,隐藏箭头.
打开和关闭它应该是旋转.我尝试了一些不工作的代码.
请有人帮我这样做.
styles.xml
<style name="AppTheme" parent="Theme.AppCompat.Light">
<item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
<style name="DrawerArrowStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="spinBars">true</item>
<item name="color">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我尝试了这个, 链接我提到
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
//for Navigation Bar
DrawerLayout drawerLayout;
ListView listView;
String[] drawerlist;
ActionBarDrawerToggle drawerListener;
private MyAdapter4 myAdapter4;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.alerts);
//navigation initialize
drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
listView = (ListView) findViewById(R.id.drawerList);
drawerlist …
Run Code Online (Sandbox Code Playgroud) 'my-layout'代码:
<link rel="import" href="../bower_components/iron-icons/iron-icons.html" >
<link rel="import" href="../bower_components/paper-icon-button/paper-icon-button.html" >
<link rel="import" href="../bower_components/paper-drawer-panel/paper-drawer-panel.html" >
<link rel="import" href="../bower_components/paper-header-panel/paper-header-panel.html" >
<link rel="import" href="../bower_components/paper-toolbar/paper-toolbar.html" >
<polymer-element name="m-layout" >
<template>
<paper-drawer-panel>
<paper-header-panel drawer>
<paper-toolbar>
<div>Application</div>
</paper-toolbar>
<div> Drawer content... </div>
</paper-header-panel>
<paper-header-panel main>
<paper-toolbar>
<paper-icon-button icon="menu" style="color: white;" paper-drawer-toggle></paper-icon-button>
<div>Title</div>
</paper-toolbar>
<div> Main content... </div>
</paper-header-panel>
</paper-drawer-panel>
</template>
<script>
Polymer({
is: 'm-layout',
togglePanel: function() {
this.$.paper_drawer_panel.togglePanel();
}
});
</script>
</polymer-element>
Run Code Online (Sandbox Code Playgroud)
如果我添加paper-drawer = toogle属性,主抽屉中的纸图标按钮就会消失...
'main.jsp'代码:
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<html>
<head>
<script src="bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<link …
Run Code Online (Sandbox Code Playgroud) drawertoggle ×10
android ×8
drawerlayout ×3
toolbar ×2
behavior ×1
ios ×1
java ×1
polymer ×1
toggle ×1