导航抽屉(menudrawer)Android 5(棒棒糖)风格
我正在我的项目中使用menudrawer库(这个:) 我正在更新我的应用程序,使其与API21(Android 5棒棒糖)和材质设计兼容。当您将此库与API21 menudrawer图标一起使用时,它看起来很糟糕 我想实现您可以在新的Play Store中看到的过渡(新的menudrawer图标过渡到箭头)导航抽屉(menudrawer)Android 5(棒棒糖)风格,android,drawable,navigation-drawer,android-5.0-lollipop,Android,Drawable,Navigation Drawer,Android 5.0 Lollipop,我正在我的项目中使用menudrawer库(这个:) 我正在更新我的应用程序,使其与API21(Android 5棒棒糖)和材质设计兼容。当您将此库与API21 menudrawer图标一起使用时,它看起来很糟糕 我想实现您可以在新的Play Store中看到的过渡(新的menudrawer图标过渡到箭头) 最好的方法是什么?这个图书馆有可能吗?目前我认为唯一的解决方案是定制绘图。但也许我可以用某种方式使用本地drawable?好的。我花了几个小时使用新的API,我认为对我来说最好的方法是将我
最好的方法是什么?这个图书馆有可能吗?目前我认为唯一的解决方案是定制绘图。但也许我可以用某种方式使用本地drawable?好的。我花了几个小时使用新的API,我认为对我来说最好的方法是将我的抽屉从lib重写为原生抽屉布局 但这可能对有类似问题的人有用。我已经创建了带有抽屉布局的测试项目(AndroidStudio->New project with menudrawer) 然后我看到了同样的问题。错误的图标。如果您想看到Android 5.0的精美动画和良好图标,请确保使用:
import android.support.**v7**.app.ActionBarDrawerToggle;
注意v7。默认情况下,Fragment类具有v4导入,然后您将不会看到良好的图标
还有一件事。更改为v7后,需要将ActionBarDrawerToggle函数修复为新构造函数。就这样。您将看到新的抽屉图标。首先,请确保更新到最新的SDK。在Android Studio中创建新项目,然后在buid.gradle中添加appcompat-v7.21.0.+和appcompat-v4.21.0.+库作为gradle依赖项
compile 'com.android.support:appcompat-v7:21.0.2'
compile 'com.android.support:support-v4:21.0.2'
在color.xml文件中添加primaryColor和primarycolorDark
<resources>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#0D47A1</color>
</resources>
<resources>
<string name="app_name">Lollipop Drawer</string>
<string name="action_settings">Settings</string>
<string name="drawer_open">open</string>
<string name="drawer_close">close</string>
</resources>
#2196F3
#0D47A1
在strings.xml文件中添加抽屉打开/关闭字符串值
<resources>
<color name="primaryColor">#2196F3</color>
<color name="primaryColorDark">#0D47A1</color>
</resources>
<resources>
<string name="app_name">Lollipop Drawer</string>
<string name="action_settings">Settings</string>
<string name="drawer_open">open</string>
<string name="drawer_close">close</string>
</resources>
棒棒糖抽屉
设置
打开
关闭
您的activity_my.xml布局文件如下所示:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<include layout="@layout/toolbar" />
<android.support.v4.widget.DrawerLayout
android:layout_width="match_parent"
android:id="@+id/drawerLayout"
android:layout_height="match_parent">
<!-- activity view -->
<RelativeLayout
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="match_parent">
<TextView
android:layout_centerInParent="true"
android:layout_width="wrap_content"
android:textColor="#000"
android:text="Activity Content"
android:layout_height="wrap_content" />
</RelativeLayout>
<!-- navigation drawer -->
<RelativeLayout
android:layout_gravity="left|start"
android:layout_width="match_parent"
android:background="#fff"
android:layout_height="match_parent">
<ListView
android:id="@+id/left_drawer"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:divider="#eee"
android:background="#fff"
android:dividerHeight="1dp" />
</RelativeLayout>
</android.support.v4.widget.DrawerLayout>
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toolbar"
android:minHeight="?attr/actionBarSize"
android:background="?attr/colorPrimary"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.Toolbar>
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nkdroid.com.lollipopdrawer" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/myAppTheme" >
<activity
android:name=".MyActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
查看Android团队于2015年5月发布的新棒棒糖组件
为什么不在Android 5.0 SDK中使用appcompat-v7库?它内置了此动画。@alanv但要使用appcompat-v7,您的意思是-从我的项目中删除menudrawer并使用本机的?目前这是有问题的。我的意思是使用支持库中的抽屉布局。看起来menudrawer提供了完全相同的功能,但是DrawerLayout是为了工作ActionBarDrawerToggle(这就是提供此动画的原因)。@alanv我已经用NagivationDrawer检查了Android Studio中的DrawerLayout-wizard项目(目标API为21)。图标是相同的-(N5的屏幕截图和昨天的L)我在使用支持库中的默认抽屉布局时看到了相同的情况。ActionBarDrawerToggle的v4版本已被弃用。请参阅。@adek-这甚至适用于运行android api 10级的设备,是吗?或者我们需要为这些api级别的转换效果单独编码吗?@Rat-a-tat-a-tatratouille问得好。我读到它应该与API10一起工作。我现在用的是14+的。非常感谢。我尽一切努力使图标正确,但没有任何效果。然后我看到了这个,瞧!您为我节省了许多紧张的时间。有关更改为新构造函数的确切说明,请参阅
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="nkdroid.com.lollipopdrawer" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/myAppTheme" >
<activity
android:name=".MyActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>