标签: android-navigation

如何更改android中的状态栏颜色

首先,它不是重复,如在如何更改Android状态栏的背景颜色

如何更改状态栏颜色,该颜色应与导航栏中的颜色相同.

我希望状态栏颜色与导航栏颜色相同

在此输入图像描述

android statusbar android-notifications android-navigation

371
推荐指数
17
解决办法
70万
查看次数

Android L中不推荐使用操作栏导航模式

纵观在为Android"L"预览API diff报告,我看到与在导航模式的所有方法ActionBar类(如setNavigationMode(),addTab(),selectTab(),&C).现已弃用.

文档说明:

不推荐使用操作栏导航模式,内联工具栏操作栏不支持.请考虑使用其他常见的导航模式.

什么是假设的替代品?

另外,"内联工具栏操作栏"是一个新概念吗?我不认为我以前听说过.

android android-actionbar android-navigation android-5.0-lollipop

201
推荐指数
3
解决办法
12万
查看次数

Appcompatv7 - v21导航抽屉不显示汉堡包图标

我正在使用最新的appcompat支持库实现棒棒糖风格的导航抽屉,但问题是汉堡包图标永远不会显示.仅显示后退图标.

这是我的活动代码

import android.os.Bundle;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.View;

public class Home extends ActionBarActivity {

private DrawerLayout mDrawerLayout;
private ActionBarDrawerToggle mDrawerToggle;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    initViews();
}


private void initViews(){

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);


    toolbar.setTitleTextColor(getResources().getColor(android.R.color.white));
    setSupportActionBar(toolbar);

    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,toolbar ,  R.string.drawer_open, R.string.drawer_close) { 

        /** Called when a drawer has settled in a completely closed state. */ 
        public void onDrawerClosed(View view) {
            super.onDrawerClosed(view);
            //getActionBar().setTitle(mTitle);
            //invalidateOptionsMenu(); …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-support-library android-navigation

94
推荐指数
7
解决办法
6万
查看次数

如何检测导航抽屉是否打开?

标题解释了这一切.我想做的就是知道导航抽屉是否打开.我在网上搜索了很多并找到了方法,isDrawerOpen(int drawerGravity)但找不到一个令人满意的答案,解释了如何在方法中使用它.如果有人向我解释,我将不胜感激.

提前致谢!

android android-navigation

86
推荐指数
4
解决办法
6万
查看次数

设置launchMode ="singleTask"vs设置活动launchMode ="singleTop"

我有一个非常分层的应用程序(活动类似于League> Team> Position> Player)所以我已经完成了每个活动singleTop,以保持导航合理并防止重复实例.

现在我正在制作我的第二个应用程序,我已经看到它建议声明我的应用程序是singleTask为了防止重复的实例.有人可以帮助解释每种方法的优点吗?

我的新应用程序只是一个包含3个片段的活动,然后我可能会添加一个设置活动,也许还有一个FAQ.

编辑:我刚刚意识到这singleTask并没有像我想象的那样阻止我的应用程序的重复实例.现在正在寻找处理这个问题的正确方法......

android android-manifest android-activity android-navigation

53
推荐指数
4
解决办法
4万
查看次数

Android Jetpack导航,使用Youtube或Instagram的BottomNavigationView,如正确的后退导航(片段后退堆栈)?

Android Jetpack导航,BottomNavigationView在后退按钮上点击自动片段后栈?

我想要的是,在用户一个接一个地选择多个标签后,用户点击后退按钮应用必须重定向到他/她打开的最后一页.

通过在ArrayList中保存当前选定的项目,我使用Android ViewPager实现了相同的功能.Android Jetpack导航发布后是否有任何自动后退堆栈?我想用导航图实现它

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".main.MainActivity">

    <fragment
        android:id="@+id/my_nav_host_fragment"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        app:defaultNavHost="true"
        app:layout_constraintBottom_toTopOf="@+id/navigation"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:navGraph="@navigation/nav_graph" />

    <android.support.design.widget.BottomNavigationView
        android:id="@+id/navigation"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="0dp"
        android:layout_marginEnd="0dp"
        android:background="?android:attr/windowBackground"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:menu="@menu/navigation" />

</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

navigation.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home"
        android:title="@string/title_home" />

    <item
        android:id="@+id/navigation_people"
        android:icon="@drawable/ic_group"
        android:title="@string/title_people" />

    <item
        android:id="@+id/navigation_organization"
        android:icon="@drawable/ic_organization"
        android:title="@string/title_organization" />

    <item
        android:id="@+id/navigation_business"
        android:icon="@drawable/ic_business"
        android:title="@string/title_business" />

    <item
        android:id="@+id/navigation_tasks"
        android:icon="@drawable/ic_dashboard"
        android:title="@string/title_tasks" />

</menu>
Run Code Online (Sandbox Code Playgroud)

还补充道

bottomNavigation.setupWithNavController(Navigation.findNavController(this, R.id.my_nav_host_fragment))
Run Code Online (Sandbox Code Playgroud)

我得到了一个答案Levi …

android android-navigation bottomnavigationview android-architecture-components android-architecture-navigation

50
推荐指数
7
解决办法
2万
查看次数

Android导航架构组件 - 获取当前可见片段

在尝试导航组件之前,我曾经手动执行片段事务并使用片段标记来获取当前片段.

val fragment:MyFragment = supportFragmentManager.findFragmentByTag(tag):MyFragment

现在在我的主要活动布局中,我有类似的东西:

<fragment
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/nav_host"
        app:navGraph= "@navigation/nav_item"
        android:name="androidx.navigation.fragment.NavHostFragment"
        app:defaultNavHost= "true"
        />
Run Code Online (Sandbox Code Playgroud)

如何通过导航组件检索当前显示的片段?干

supportFragmentManager.findFragmentById(R.id.nav_host)

返回一个NavHostFragment,我想检索我显示的'MyFragment`.

谢谢.

android android-navigation android-jetpack

47
推荐指数
10
解决办法
2万
查看次数

FragmentContainerView 使用 findNavController

我正在使用带有底部导航的 Android 导航组件,lint 给出了关于替换<fragment>标签的警告,FragmentContainerView但是当我替换时,findNavController它不起作用,它给我错误,关于它没有设置 NavController

分段

<androidx.fragment.app.FragmentContainerView
            android:id="@+id/nav_host_fragment"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:defaultNavHost="true"
            app:navGraph="@navigation/mobile_navigation" />
Run Code Online (Sandbox Code Playgroud)

活动

val navController = findNavController(R.id.nav_host_fragment)
    
    val appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.navigation_classes, R.id.navigation_schedule, R.id.navigation_settings
        )
    )
    setupActionBarWithNavController(navController, appBarConfiguration)
    navView.setupWithNavController(navController)
}
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-navigation

44
推荐指数
2
解决办法
1万
查看次数

使导航抽屉在状态栏后面绘制

我正在尝试创建一个Nav Drawer,就像Material spec中的那个(就像新gmail应用程序中的那个).请注意导航抽屉的内容如何在状态栏后面绘制:

材料规格中的示例

使用Chris Banes从这个问题的答案,我能够成功地使我的应用程序中的导航抽屉在状态栏后面绘制; 这工作正常.什么是无效的是绘制状态栏后面的导航抽屉的内容.我希望抽屉中的蓝色图像显示在状态栏后面,但该区域使用状态栏的颜色绘制,如此屏幕截图所示.

我的应用

那么,如何在状态栏后面的区域中绘制导航抽屉?我在下面发布了我项目的相关部分.

包含导航抽屉的基本布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/nav_drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:fitsSystemWindows="true">

    <!-- Framelayout to display Fragments -->
    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_above="@+id/warning_container" />

    <FrameLayout
        android:id="@+id/navigation_drawer_fragment_container"
        android:layout_width="300dp"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        android:layout_gravity="start">

        <fragment
            android:id="@+id/navigation_drawer_fragment"
            android:name="com.thebluealliance.androidclient.fragments.NavigationDrawerFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            tools:layout="@layout/fragment_navigation_drawer" />

    </FrameLayout>

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

我活动的主题

<style name="AppThemeNoActionBar" parent="AppTheme">
    <item name="windowActionBar">false</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

onCreate()我的活动中,我做了以下事情:

mDrawerLayout.setStatusBarBackground(R.color.primary_dark);
Run Code Online (Sandbox Code Playgroud)

android android-layout android-navigation

43
推荐指数
3
解决办法
4万
查看次数

所选项目的导航抽屉项目背景颜色

我使用Android Studio来实现导航抽屉,我无法获得用于显示我们当前要更改的部分的蓝色.

我尝试了很多东西,我目前正在使用listSelector,它看起来像:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_activated="true" android:drawable="@color/selected" />
    <item android:state_pressed="true" android:drawable="@color/highlight" />


</selector>
Run Code Online (Sandbox Code Playgroud)

我也试过了state_checked.state_pressed在这种情况下工作,但当前选择的项目仍然是蓝色.

编辑:我一直在研究这个,当创建适配器时,传递的上下文是getActionBar().getThemedContext()如此我想如果我能找到正确的属性来分配我的操作栏样式我可以从那里改变它.我尝试了几个不同的属性而没有运气.有谁知道确切的属性?

我也意识到我是否愿意

<item name="android:activatedBackgroundIndicator">@drawable/nav_listview_selector</item>

在我的主题和变化的主要部分getActionBar().getThemedContext()getActivity.getBaseContext话,我可以改变颜色,但我不认为这是正确的方式.我认为应该使用主题背景.因此,如果有人知道activatedBackgroundIndicator可以放在哪里,那么它将被用于getActionBar.getThemedContext()

EDIT2:

因此,用于listview的文本视图是SDK中的一个,如下所示:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"
/>
Run Code Online (Sandbox Code Playgroud)

所以我尝试修改"?android:attr/activatedBackgroundIndicator"主题级别,但它对选中/选中/激活没有效果,但它对按下有效.有人知道为什么吗?我怎么能改变它?

android android-listview android-navigation

40
推荐指数
6
解决办法
7万
查看次数