我已经以NavigationView
编程方式添加了项目:
**HERE ADD ITEMS**
Menu rightMenu = mRightDrawerView.getMenu();
for (DataParking dataParking : dataParkingList) {
MenuItem menuItem = rightMenu.add(dataParking.getTimeParking());
}
**HERE ADD CLICK LISTENER**
mRightDrawerView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
// Select menu
menuItem.setChecked(true);
// Closing left_drawer on item click
mDrawerLayout.closeDrawer(mRightDrawerView);
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
导航抽屉中的项目可正确单击,但选择不是持久的。如果我通过XML添加相同的项目,则效果很好。
我有这个布局的NavigationView菜单:
<item android:title="title1">
<menu>
<item
android:id="@+id/nav_tab1"
android:icon="@drawable/ic_action_nav_tab1"
android:title="test1" />
<item
android:id="@+id/nav_tab2"
android:icon="@drawable/ic_action_nav_tab2"
android:title="test2" />
</menu>
</item>
<item android:title="title2">
<menu>
<item
android:id="@+id/nav_settings"
android:icon="@drawable/ic_action_settings"
android:title="test3" />
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
如何从菜单中删除行分隔符?
我为我的应用程序创建了另一个主题,即Dark.我使用导航栏定义为
<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" />
Run Code Online (Sandbox Code Playgroud)
它在菜单中定义了两组可选择的组
<item
android:id="@+id/sort_item"
android:title="One">
<menu>
<group
android:id="@+id/menu_group_sort"
android:checkableBehavior="single">
<item
android:id="@+id/nav_sort_new"
android:title="@string/menu_new" />
<item
android:id="@+id/nav_sort_hot"
android:title="@string/menu_hot" />
<item
android:id="@+id/nav_sort_top"
android:title="@string/menu_top" />
</group>
</menu>
</item>
<item
android:id="@+id/filter_item"
android:title="Two">
<menu>
<group
android:id="@+id/menu_group_filter"
android:checkableBehavior="single">
<item
android:id="@+id/nav_category_all"
android:title="@string/menu_all" />
<item
android:id="@+id/nav_category_business"
android:title="@string/menu_business" />
<item
android:id="@+id/nav_category_technology"
android:title="@string/menu_technology" />
<item
android:id="@+id/nav_category_politics"
android:title="@string/menu_politics" />
</group>
</menu>
</item>
Run Code Online (Sandbox Code Playgroud)
通常,所选项目的文本是colorPrimary,背景看起来是某种Android灰色.当我定义我的新主题时,我会这样使用它
<!-- Dark theme. -->
<style name="AppTheme.Dark" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimaryInverse</item>
<item name="colorPrimaryDark">@color/colorPrimaryDarkInverse</item>
<item name="colorAccent">@color/colorAccentInverse</item>
<item name="android:textColor">@color/textColorPrimaryInverse</item>
<item name="android:textColorPrimary">@color/textColorPrimaryInverse</item>
<item name="android:textColorSecondary">@color/textColorSecondaryInverse</item>
<item …
Run Code Online (Sandbox Code Playgroud) 我无法删除NavigationView
Lollipop 和更高版本的高程(阴影)。我添加mDrawerLayout.setScrimColor(Color.TRANSPARENT);
到我的DrawerLayout
, 但它会影响棒棒糖之前的版本。我也尝试添加app:elevation="0dp"
和添加android:elevation="0dp"
到我的NavigationView
但未成功。
我需要在 android 6 上获得 android 4 的结果。
我的应用程序中有一个导航视图,在应用程序样式中添加两行之后:
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
Run Code Online (Sandbox Code Playgroud)
导航图标颜色更改为黑色,对于这个问题,我在样式中添加了以下行:
<item name="android:textColorSecondary">@android:color/white</item>
Run Code Online (Sandbox Code Playgroud)
现在导航图标又是白色的,但现在我有一个新问题。使用上面的代码,导航项的标题也改变了颜色。
我没有找到解决此干扰的方法
风格 :
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:textColorSecondary">@android:color/white</item>
</style>
Run Code Online (Sandbox Code Playgroud)
导航菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:showIn="navigation_view">
<group
android:id="@+id/testGRP"
android:checkableBehavior="single"
>
<item android:title="???? : ?????? ????"
android:id="@+id/menuItem_StudentList11"
android:icon="@drawable/ic_arrow_drop_up"
/>
<item android:title="???? ????"
android:id="@+id/menuItem_StudentList_Quize1"
android:icon="@drawable/all_exam_icon"
/>
<item android:title="@string/Navigation_StudentList3"
android:id="@+id/menuItem_StudentList_Quize"
android:icon="@drawable/all_exam_icon"
/>
</group>
<item android:title="????????:"> //this line is title
<menu>
<item android:title="@string/Navigation_StudentList4"
android:id="@+id/menuItem_StudentList_MidTerm"
android:icon="@drawable/all_exam_icon"
/> …
Run Code Online (Sandbox Code Playgroud) android android-appcompat android-styles android-toolbar android-navigationview
图片胜过千言万语:
这是我的代码:
<android.support.design.widget.NavigationView
android:id="@+id/navigation_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:background="@color/Black"
app:headerLayout="@layout/nav_header"
app:itemIconTint="@color/White"
app:itemTextColor="@color/White"
app:menu="@menu/drawer" />
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
这是我的菜单-xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group>
<item
android:id="@+id/drawerFullName"
android:icon="@drawable/fullnamemale"
android:title="@string/full_name" />
<item
android:id="@+id/drawerAge"
android:icon="@drawable/age"
android:title="@string/age" />
<item
android:id="@+id/drawerAbout"
android:icon="@drawable/about"
android:title="@string/about_user_in_20_letters" />
<item android:title="@string/personalize">
<menu>
<item
android:id="@+id/drawerChangeTheme"
android:icon="@drawable/changetheme"
android:title="@string/change_your_theme" />
</menu>
</item>
<item android:title="@string/user_settings">
<menu>
<item
android:id="@+id/drawerLogout"
android:icon="@drawable/logout"
android:title="@string/logout" />
</menu>
</item>
</group>
</menu>
Run Code Online (Sandbox Code Playgroud)
是的,“标题”颜色没有改变。还是黑的。。
我正在尝试如下更改导航视图的文本颜色和图标色调颜色,
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
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:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include layout="@layout/include_list_viewpager"/>
<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:background="@color/colorPrimary"
android:fitsSystemWindows="true"
android:minHeight="?attr/actionBarSize"
app:itemIconTint="@android:color/white"
android:theme="@style/AppTheme.NavigationView"
app:itemTextAppearance="?android:attr/textAppearanceSmall"
app:itemTextColor="@android:color/white"
app:menu="@menu/drawer_view"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
但这并没有帮助我更改颜色。因此,我尝试以编程方式如下设置颜色,
// FOR NAVIGATION VIEW ITEM TEXT COLOR
int[][] state = new int[][]{
new int[]{-android.R.attr.state_enabled}, // disabled
new int[]{android.R.attr.state_enabled}, // enabled
new int[]{-android.R.attr.state_checked}, // unchecked
new int[]{android.R.attr.state_pressed} // pressed
};
int[] color = new int[]{
Color.WHITE,
Color.WHITE,
Color.WHITE,
Color.WHITE
};
ColorStateList csl = new ColorStateList(state, color);
// FOR NAVIGATION VIEW ITEM …
Run Code Online (Sandbox Code Playgroud) 我已经连接了我的菜单 xml 和 Android 导航组件navigation_view.setupWithNavController(navController)
,一切正常。我的菜单的一部分是注销选项。如果用户选择此导航目的地,应用程序应导航到AuthorizationFragment
并将返回堆栈弹出到此 Fragment 并将 inclusive 设置为 true以删除所有先前的Fragment。
我查看了导航库的代码,并达到了应该发生这种情况的地步:
NavigationUI.onNavDestinationSelected():
/**
* Attempt to navigate to the {@link NavDestination} associated with the given MenuItem. This
* MenuItem should have been added via one of the helper methods in this class.
*
* <p>Importantly, it assumes the {@link MenuItem#getItemId() menu item id} matches a valid
* {@link NavDestination#getAction(int) action id} or
* {@link NavDestination#getId() destination id} to be navigated to.</p>
* <p> …
Run Code Online (Sandbox Code Playgroud) android navigation-drawer android-navigation android-navigationview android-jetpack
我在这里写的是关于我们从 AppCompat 库迁移到 AndroidX 库时引入的一个问题。在此过程中,当以下问题开始时,我们从 切换android.support.design.widget.NavigationView
到 and that\xe2\x80\x99s。com.google.android.material.navigation.NavigationView
在我们的NavigationView设计中,为了节省空间,我们实现了一个可展开的菜单,这样当用户点击\xe2\x80\x9cmore\xe2\x80\x9d按钮时,菜单就会展开以显示更多选项。一开始只有一些选项可见,其余选项不可见,如下所示;
\n\n单击 \xe2\x80\x9cMore...\xe2\x80\x9d 按钮后,菜单将扩展为;
\n\n为此,我们使用以下代码;
\n\n@Override\npublic boolean onNavigationItemSelected(MenuItem item)\n{\n ....\n if (item.getItemId() == R.id.nav_more)\n {\n item.setVisible(false); // hide the \xe2\x80\x9cMore\xe2\x80\x9d item\n getMenu().findItem(R.id.nav_option_3).setVisible(true);\n getMenu().findItem(R.id.nav_option_4).setVisible(true);\n getMenu().findItem(R.id.nav_option_5).setVisible(true);\n getMenu().findItem(R.id.nav_option_6).setVisible(true);\n return true;\n }\n .......\n return false;\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n好吧,这段代码在过去是有效的,但是当我们迁移到使用 androidx 库时,噗,它停止工作了。嗯,确实起到了一点作用。\xe2\x80\x9c更多...\xe2\x80\x9d 按钮被隐藏,但之前隐藏的选项没有显示。\n因为,我花了很多小时才解决这个问题,并避免其他人头痛,我会解释一下问题和解决方案。
\n\n在这种情况下要做的第一件事就是查看源代码。由于代码是开源的,我可以在 github …
android navigation-drawer android-navigation android-navigationview
我有一个Activity
带有 aFragmentContainerView
和BottomNavigationView
设置的应用程序:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
app:defaultNavHost="true"
app:navGraph="@navigation/splash" />
<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:visibility="gone"
app:elevation="12dp"
app:labelVisibilityMode="unlabeled"
app:menu="@menu/menu_bottom_nav_main" />
</LinearLayout>
</layout>
Run Code Online (Sandbox Code Playgroud)
当用户进入应用程序时,我需要显示一个启动页面(如果需要,还需要登录),然后将其导航到主页。所以我创建了 4 个导航图,1 个用于飞溅,3 个用于底部导航。我正在使用android 示例中的这种灭绝来设置带有 3 个图形的底部导航。这是我的MainActivity
代码:
@AndroidEntryPoint
class MainActivity : BaseActivity<ActivityMainBinding, MainViewModel>(
R.layout.activity_main,
MainViewModel::class,
) {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!vm.splashPassed) {
val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
currentNavController = MutableLiveData(navHostFragment.navController) …
Run Code Online (Sandbox Code Playgroud)