我正在尝试在材料设计中实现一个简单的导航抽屉,因此我的抽屉顶部有一个标题和一些文本项(A:CompactHeader Drawer,...)(见图1).单击标题图像时,应打开一个列表(B:mikepenz@gmail.com,...)并"覆盖"我现有的文本项(A)(见图2).如果选择了文本项(B),则原始列表(A)应该返回其原始位置,并且(B)不再可见(参见图1).
注意:这些截图来自教程,但代码太混乱了.我正在寻找一个相对简单的解决方案......我在想Fragments,但我不知道这是否是解决这个问题的正确方法.
android navigation-drawer material-design navigationview android-navigationview
美好的一天,你能帮助我吗?在模拟器上编译/运行我的代码时出现此错误.这是我过去的示例教程.我使用了最小的Target API - 15并编译了最新的gradle
'com.android.support:design:23.0.0'
http://www.android4devs.com/2015/06/navigation-view-material-design-support.html
代码错误:
AndroidRuntime:java.lang.RuntimeException:无法启动活动ComponentInfo {com.eccp.projects.ecosavers.ecosavers/com.eccp.projects.ecosavers.ecosavers.activities.MainActivity}:android.view.InflateException:二进制XML文件行# 29:二进制XML文件行#29:错误膨胀类android.support.design.widget.NavigationView 12-29 06:43:39.409 3448-3448/com.eccp.projects.ecosavers.ecosavers E/AndroidRuntime:at android.app .ActivityThread.performLaunchActivity(ActivityThread.java:2416)
E/AndroidRuntime: 引起:android.view.InflateException:二进制XML文件行#29:二进制XML文件行#29:错误膨胀类android.support.design.widget.NavigationView
这是我的代码: MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//SET my own toolbar
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);
mNavigationView = (NavigationView) findViewById(R.id.navigation_view);
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
if (menuItem.isChecked()) menuItem.setChecked(false);
else menuItem.setChecked(true);
//Closing drawer on item click
mDrawerlayout.closeDrawers();
//Check to see which item was being clicked and perform appropriate action
switch (menuItem.getItemId()) {
//Replacing …
Run Code Online (Sandbox Code Playgroud) 在应用程序上使用NavigationView时出现以下问题:
java.lang.NoClassDefFoundError:android.support.design.internal.NavigationMenuPresenter
我在这个示例项目中遇到了同样的问题:
https://github.com/xamarin/monodroid-samples/tree/master/android5.0/Cheesesquare
测试:
Android 5.1
额外的信息:
=====================
Xamarin Studio版本5.10.1(版本6)安装UUID:4f372b0c-765f-463b-9408-1bd0211e4e94运行时:Mono 4.2.1(显式/ 6dd2d0d)GTK + 2.24.23(Raleigh主题)
包版本:402010102 Xamarin.Profiler未安装
Apple Developer Tools Xcode 7.2(9548)Build 7C68
Xamarin.Mac未安装
Xamarin.Android版本:6.0.0.34(商业版)Android SDK:/ Users/rdelrosario/Library/Developer/Xamarin/android-sdk-mac_x86支持的Android版本:2.3(API级别10)4.0.3(API级别15)4.1 (API级别16)4.2(API级别17)4.3(API级别18)4.4(API级别19)4.4.87(API级别20)5.0(API级别21)5.1(API级别22)6.0(API级别23)
SDK工具版本:24.4.1 SDK平台工具版本:23.1 SDK构建工具版本:23.0.2
Java SDK:/ usr java version"1.8.0_25"Java(TM)SE运行时环境(版本1.8.0_25-b17)Java HotSpot(TM)64位服务器VM(版本25.25-b02,混合模式)
Xamarin Android Player版本:0.6.5位置:/ Applications/Xamarin Android Player.app
Xamarin.iOS版本:9.4.0.0(商业版)哈希:7322991分支:master建立日期:2015-12-08 16:20:29-0500
构建信息版本ID:510010006 Git修订版:0b60eecdb531933734519c13257d16a780274aab构建日期:2015-12-04 20:28:20-05 Xamarin插件:9876fd7c9837977178411ec7375b4352c0a0d6af构建通道:monodevelop-lion-cycle6-baseline
操作系统Mac OS X 10.10.5 Darwin Rendys-MacBook-Pro.local 14.5.0 Darwin内核版本14.5.0 Tue Sep 1 21:23:09 PDT 2015 root:xnu-2782.50.1~1/RELEASE_X86_64 x86_64
xamarin.android xamarin navigationview androiddesignsupport android-navigationview
我正在尝试将使用png资源的Android应用程序迁移到图标字体.我可以使用列表视图在导航抽屉中成功使用它.但是我无法在导航视图中使用它,只需在菜单的xml文件中指定它即可.
这是我尝试时得到的 Navigation Drawer
我不知道如何使用图标字体navigation view
来获取那些标记的图标.
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_apple"
android:icon="@drawable/ic_menu_apple"
android:title="Apple" />
<item
android:id="@+id/nav_chrome"
android:icon="@drawable/ic_menu_chrome"
android:title="Orange" />
<item
android:id="@+id/nav_left"
android:icon="@drawable/ic_menu_left"
android:title="Grapes" />
</group>
Run Code Online (Sandbox Code Playgroud)
如何在此菜单中使用图标字体设置这些图标?
android font-awesome icon-fonts navigationview android-navigationview
对于a navigationview
,我们可以通过将它们分成两组来创建两个项目之间的分隔符.但是我们如何在标题和菜单之间创建一个分隔符呢?我试图在菜单顶部创建一个空组,但它不起作用.
navigationview
看起来很酷的默认主题,但我喜欢黑白风格.但是当我无法在标题和菜单之间创建分隔符时,它看起来很尴尬(悲伤)
我在抽屉上看到可以看到点击效果的问题.
我有活动xml布局如下:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
android:id="@+id/drawer_layout"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<android.support.design.widget.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
你可以看到我放入NavigationView
我的DrawerLayout
然后NavigationView
使用菜单xml文件填充.
我activity_main_drawer.xml
看起来如下:
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
>
<group>
<item
android:id="@+id/id1"
android:title="Item 1"/>
<item
android:id="@+id/id2"
android:title="Item 2"/>
<item
android:id="@+id/id3"
android:title="Item 3"/>
<item
android:id="@+id/id4"
android:title="Item 4"/>
</group>
Run Code Online (Sandbox Code Playgroud)
不幸的是,当我这样做时,我点击该抽屉菜单中的项目后没有任何视觉效果.我想要的是所谓的"涟漪效应".我该怎么做?
android navigation-drawer drawerlayout navigationview android-navigationview
我的问题是,当我尝试使用底部导航更改片段时,它会起作用,但在一种情况下除外。我有 5 个片段,当我进入第 3 个片段并进入第 5 个片段后,第 5 个片段的图标 don\xc2\xb4t 改变了它的颜色。之后,当我进行另一次导航时,应用程序崩溃并给出下一个错误:
\njava.lang.IndexOutOfBoundsException: fromIndex = -1\n at java.util.ArrayList.subListRangeCheck(ArrayList.java:1014)\n at java.util.ArrayList.subList(ArrayList.java:1008)\n at androidx.navigation.fragment.FragmentNavigator.popBackStack(FragmentNavigator.kt:80)\n at androidx.navigation.NavController.popBackStackInternal(NavController.kt:275)\n at androidx.navigation.NavController.popBackStackInternal(NavController.kt:558)\n at androidx.navigation.NavController.navigate(NavController.kt:1682)\n at androidx.navigation.NavController.navigate(NavController.kt:1541)\n at androidx.navigation.NavController.navigate(NavController.kt:1468)\n at androidx.navigation.ui.NavigationUI.onNavDestinationSelected(NavigationUI.kt:92)\n at androidx.navigation.ui.NavigationUI.setupWithNavController$lambda-6(NavigationUI.kt:602)\n at androidx.navigation.ui.NavigationUI.$r8$lambda$6wzEv9QqEZKdQFS1sQQy-bdQvgE(Unknown Source:0)\n at androidx.navigation.ui.NavigationUI$$ExternalSyntheticLambda2.onNavigationItemSelected(Unknown Source:2)\n at com.google.android.material.navigation.NavigationBarView$1.onMenuItemSelected(NavigationBarView.java:295)\n at androidx.appcompat.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:834)\n at androidx.appcompat.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)\n at androidx.appcompat.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:985)\n at com.google.android.material.navigation.NavigationBarMenuView$1.onClick(NavigationBarMenuView.java:133)\n at android.view.View.performClick(View.java:7520)\n at android.view.View.performClickInternal(View.java:7489)\n at android.view.View.access$3600(View.java:826)\n at android.view.View$PerformClick.run(View.java:28555)\n at android.os.Handler.handleCallback(Handler.java:938)\n at android.os.Handler.dispatchMessage(Handler.java:99)\n at android.os.Looper.loop(Looper.java:233)\n at android.app.ActivityThread.main(ActivityThread.java:8010)\n at java.lang.reflect.Method.invoke(Native Method)\n at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:631)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)\n
Run Code Online (Sandbox Code Playgroud)\n但是,如果之前我单击了第 5 个片段并转到第 3 …
android android-navigation android-navigationview android-navigation-bar android-navigation-graph
我的应用程序中有一个导航抽屉。我想在导航抽屉菜单的第二部分以编程方式添加一个选项。menu.xml 是-
<group android:checkableBehavior="single">
<item android:id="@+id/nav_connect_sensor"
android:icon="@drawable/ic_action_bluetooth"
android:title="Connect Bluetooth" />
<item android:id="@+id/nav_take_tour"
android:icon="@drawable/ic_action_video"
android:title="Take a tour" />
<item android:id="@+id/nav_my_stats"
android:icon="@drawable/ic_action_bargraph"
android:title="My Stats" />
</group>
<item android:title="@string/navigation_drawer_group_title"
android:id="@+id/other_labels">
<menu>
<item android:id="@+id/nav_myAccountSettings"
android:icon="@drawable/ic_settings"
android:title="My Account" />
<item android:id="@+id/nav_application_settings"
android:icon="@drawable/ic_action_settings"
android:title="Application Settings" />
<item android:id="@+id/comparison"
android:icon="@drawable/ic_swap_horiz"
android:title="Compare"/>
<item android:id="@+id/nav_help_and_feedback"
android:icon="@drawable/ic_live_help"
android:title="Help and Feedback" />
<item android:id="@+id/nav_logout"
android:icon="@drawable/ic_action_exit"
android:title="Sign Out" />
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
以编程方式添加选项 -
Menu menu = mNavigationView.getMenu();
menu.add(0, Menu.FIRST, Menu.FIRST, "Players")
.setIcon(R.drawable.ic_people);
Run Code Online (Sandbox Code Playgroud)
这个选项是最后添加的。如何在第三个位置添加选项,即在应用程序设置下方
我正在Android上设计一个自定义抽屉,它的顶部和底部必须有圆角,我首先自定义顶部,我发现形状的背景不透明的问题。
我有:
我需要构建:
我还想了解如何在底部将其四舍五入
nav_header_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="@dimen/nav_header_height"
android:background="@drawable/side_nav_bar"
android:gravity="bottom"
android:orientation="vertical"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<ImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_weight="4"
android:layout_height="wrap_content"
android:contentDescription="@string/nav_header_desc"
android:paddingTop="@dimen/nav_header_vertical_spacing"
app:srcCompat="@mipmap/ic_launcher_round" />
<LinearLayout
android:layout_width="0dp"
android:layout_weight="5"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="@dimen/nav_header_vertical_spacing"
android:text="@string/nav_header_title"
android:textColor="@color/colorWhite"
android:textAppearance="@style/TextAppearance.AppCompat.Headline" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorWhite"
android:text="@string/nav_header_subtitle" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
side_nav_bar.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:width="3dp"
android:color="@color/colorPrimary"
/>
<corners android:radius="1dp"
android:bottomRightRadius="0dp" android:bottomLeftRadius="0dp"
android:topLeftRadius="30dp" android:topRightRadius="0dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud) java android material-design android-navigationview material-components-android
升级到 Material Design 3 后,我注意到某些东西的背景颜色变成了我的原色设置的褪色版本。例如,如果我将主颜色设置为红色,则导航栏和日历现在有点粉红色。
<style name="AppTheme" parent="Base.AppTheme" />
<style name="Base.AppTheme" parent="Theme.Material3.DayNight.NoActionBar">
<item name="colorPrimary">@color/red</item>
</style>
Run Code Online (Sandbox Code Playgroud)
我不知道为什么材料设计假设我想要这些背景颜色。我的设计文档需要白色背景,并且无法将主色设置为白色。如果我根本不设置原色,它默认为紫色!
我对导航栏有一些运气,因为你可以设置每个项目的背景颜色,但对日历则没有运气。我尝试过在日历样式上设置所有听起来与颜色相关的内容。到目前为止,除了primaryColor 之外,日历背景没有任何改变。backgroundColor、backgroundTint 等。没有任何效果。有谁知道如何在 Material Design 3 上覆盖这种行为?
我只想将 colorPrimary 设置为绿色,并将 actionBar、navBar 和 calendar 的背景颜色设置为白色。
android android-calendar material-design android-navigationview android-navigation-bar
android ×8
java ×2
drawerlayout ×1
font-awesome ×1
icon-fonts ×1
material-components-android ×1
xamarin ×1
xml ×1