标签: navigation-drawer

禁用导航抽屉中的暗淡色调

有没有办法在Android的导航抽屉视图中禁用背景视图的暗淡化效果?

java android android-layout android-view navigation-drawer

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

如何使DrawerLayout显示在工具栏下方?

如何使抽屉布局位于操作栏/工具栏下方?我正在使用v7:21 app compat库和新的ToolBar视图.

我看到的例子看起来像

<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<!-- drawer view -->
<LinearLayout
    android:layout_width="304dp"
    android:layout_height="match_parent"
    android:layout_gravity="left|start">

    <!-- drawer content -->

</LinearLayout>

<!-- normal content view -->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- The toolbar -->
    <android.support.v7.widget.Toolbar  
        android:id="@+id/my_awesome_toolbar"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:minHeight="?attr/actionBarSize"
        android:background="?attr/colorPrimary" />

    <!-- The rest of content view -->

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

但随后工具栏将被抽屉隐藏,这使得动画汉堡图标(如v7.ActionBarDrawerToggle)无用,因为它在抽屉下方不可见,但我确实想使用新的ToolBar视图来更好地支持Material主题.

那么如何实现呢?是否可以将DrawerLayout作为非顶级视图?

android toolbar android-support-library navigation-drawer drawerlayout

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

DrawerLayout的项目点击 - 何时是替换片段的正确时间?

我正在开发一个使用导航抽屉图案的应用程序(使用DrawerLayout).

每次单击抽屉的项目,都会替换主容器中的片段.

但是,我不确定何时是进行片段交易的合适时机?抽屉开始关闭时?或者关闭后?

在google的documentaion示例中,您可以看到他们在项目单击后立即执行事务,然后关闭抽屉.
结果,抽屉看起来很迟钝而且不平滑,看起来非常糟糕(它也发生在我的应用中).

GmailGoogle云端硬盘应用程序中,另一方面,它似乎是在抽屉关闭后进行交易(我是对吗?).
结果,抽屉没有延迟且非常平滑,但至少需要大约1秒钟(抽屉关闭所需的时间)才能看到下一个片段.

在立即进行片段交易时,似乎抽屉没有办法顺畅.

你觉得怎么样?

提前致谢!

android android-fragments fragmenttransaction navigation-drawer drawerlayout

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

禁用导航抽屉,切换主页按钮/向上指示器

设置

我有一个活动,其contentView是a的一个实例DrawerLayout,它有一个带有抽屉指示器的导航抽屉,显示在操作栏中.该活动包含一个Fragment,让我们调用它ListFragment,其中包含一个选项列表.单击选项时,我将替换为ListFragmenta DetailFragment.

应用程序的体系结构

此时,我想显示一个"向上"导航选项而不是导航抽屉指示器.如果我通过调用禁用抽屉指示器,我可以显示"向上"图标mDrawerToggle.setDrawerIndicatorEnabled(false),但这只会删除抽屉图标 - 它不会删除功能 - 也就是说,当我点击插入符号时,导航抽屉是仍然开放.

此外,在这些子视图中,我想通过从屏幕边缘拖动来禁用抽屉的打开.我试过通过调用尝试这样做,setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)但它似乎没有禁用此功能.

我已经尝试扩展ActionBarDrawerToggle类以防止在单击指示器时打开抽屉 - 但是,所有发生的情况是执行覆盖操作("向上"导航),但抽屉仍然打开.

我还在使用片段时实现了在Android导航抽屉图像和向上插入符之间切换的步骤.它可以显示插入符号,但是尽管覆盖了向上按钮功能,菜单仍会打开(应用程序确实会导航回来 - 它也会打开抽屉).

所以,长话短说:当我的布局根是DrawerLayout:时,有没有(最好是干净和优雅,但此时我会用hacky)方式实现这些东西:

  1. 用"向上"插入物替换抽屉指示器(暂时可以通过 mDrawerToggle.setDrawerIndicatorEnabled(false))
  2. 单击插入符号时防止抽屉打开,而是使用我自己的"向上"功能覆盖
  3. 当我从屏幕边缘拖动时,防止抽屉打开.

编辑

好吧,看起来如果我都覆盖了ActionBarDrawerToggleAND onOptionsItemSelected,当我点击插入符号时菜单没有打开.但是如果我从边缘拖动它仍然会打开.救命!

android android-actionbar navigation-drawer

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

导航抽屉切换活动而不是片段

是否可以在Android中使用导航抽屉,但不是更新片段,我想在应用程序中切换活动作为我的导航方式.

android navigation-drawer

46
推荐指数
2
解决办法
9万
查看次数

更改导航抽屉指示器图标的颜色

我使用工具栏代替操作栏,我也使用导航抽屉.我的工具栏颜色是黑色,我希望我的导航抽屉指示灯颜色为白色.那么如何更改导航抽屉指示灯的颜色或放置自定义v7中的导航指示器.任何人都可以帮帮我吗?

android toolbar navigation-drawer

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

更改抽屉图标背对背箭头

我正在使用新的DrawerLayout侧面导航.我正在使用这样的抽屉图标('汉堡包'):

@Override
protected void onStart() {
    super.onStart();

    mDrawerLayout = (DrawerLayout) findViewById(R.id.activity_main_drawerlayout);
    mDrawerToggle = new ActionBarDrawerToggle(
            this, 
            mDrawerLayout, 
            R.drawable.ic_navigation_drawer, 
            R.string.app_name, 
            R.string.app_name);
    mDrawerLayout.setDrawerListener(mDrawerToggle);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我Fragment向backstack 添加一个时,我想再次显示后退箭头,这样用户就可以导航回"home",然后才打开app抽屉.

如何将抽屉图标重置为后退图标?
我想要的箭头:

导航抽屉

android navigation-drawer

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

在新的导航抽屉活动模板中使用onNavigationItemSelected在片段之间切换(Android Studio 1.4以后)

IntelliJ在Android Studio中对Navigation Drawer模板Activity进行了更改,Activity类中的代码行更少.新的Activity类如下所示:

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);
}

@Override
public void onBackPressed() {
    DrawerLayout …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer

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

如何在NavigationView中更改分隔符颜色?

我正在尝试使用NavigationView来实现NavigationDrawer.我通过在菜单中设置组ID添加了分隔符.但是我看不到分隔符.我想这是因为分隔符颜色与背景相同.所以我想改变分隔符颜色.但我发现无法改变它.谁能帮我?

在屏幕截图中,似乎有一个空间用于History和之间的分隔符Settings,但你看不到它.

在此输入图像描述

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:fitsSystemWindows="true"
    tools:context=".ui.MapActivity">

    <LinearLayout
        android:id="@+id/main_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include layout="@layout/toolbar_actionbar" />

        <!--main content-->
    </LinearLayout>

    <android.support.design.widget.NavigationView
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:background="@color/navdrawer_background"
        app:insetForeground="#4000"
        app:itemTextColor="@color/navdrawer_item_text_color"
        app:itemIconTint="@color/navdrawer_item_icon_tint"
        app:headerLayout="@layout/drawer_header"
        app:menu="@menu/drawer"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:id="@+id/group_feature"
        android:checkableBehavior="single">
        <item android:id="@+id/navdrawer_item_map"
            android:checked="true"
            android:icon="@drawable/ic_drawer_map"
            android:title="@string/navdrawer_item_map"/>
        <item android:id="@+id/navdrawer_item_favourite"
            android:icon="@drawable/ic_drawer_fav"
            android:title="@string/navdrawer_item_fav"/>
        <item android:id="@+id/navdrawer_item_history"
            android:icon="@drawable/ic_drawer_history"
            android:title="@string/navdrawer_item_history"/>
    </group>
    <group android:id="@+id/group_settings"
        android:checkableBehavior="single">
        <item android:id="@+id/navdrawer_item_settings"
            android:icon="@drawable/ic_drawer_settings"
            android:title="@string/navdrawer_item_settings"/>
        <item android:id="@+id/navdrawer_item_help"
            android:icon="@drawable/ic_drawer_help"
            android:title="@string/navdrawer_item_help"/>
        <item android:id="@+id/navdrawer_item_about"
            android:icon="@drawable/ic_drawer_about"
            android:title="@string/navdrawer_item_about"/> …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer navigationview android-navigationview

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

Android - 将ActionBar后退按钮切换到导航按钮

我有以下问题:

我知道如何设置工具栏来显示后退按钮图标而不是汉堡按钮图标.

由此:
在此输入图像描述

对此:

在此输入图像描述

使用: getSupportActionBar().setDisplayHomeAsUpEnabled(true);


现在,我想做反向动作,我想从后退按钮图标转到汉堡图标:

在此输入图像描述

到这里:

在此输入图像描述

我怎样才能做到这一点?

更新:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setSupportActionBar(mToolbar);
    getSupportActionBar().setDisplayShowTitleEnabled(false);
}

private void enableViews(boolean enable) {
    if(enable) {
        // Enables back button icon
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    } else {
        // TODO: Enables burger icon
    }
}
Run Code Online (Sandbox Code Playgroud)

android back-button android-actionbar navigation-drawer android-toolbar

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