标签: navigation-drawer

导航抽屉(Google+与YouTube)

有谁知道如何实现像今天的一些顶级应用程序的滑动菜单?

其他Stack Overflow 问题对于如何做到这一点没有任何答案,所以我试图收集尽可能多的信息来帮助其他人.我在下面提到的所有应用程序都可以很好地实现幻灯片菜单.

1. Google Plus(截至2012年7月7日)

Google+幻灯片菜单截图

您只能通过单击左上角的G +徽标从第一个屏幕转到第二个屏幕.请注意,整个屏幕从其位置移动并轻推到屏幕右侧(包括操作栏).要返回第一个屏幕,您可以将右侧滑回焦点,也可以再次单击G +图标.

2. YouTube(截至2012年7月7日)

YouTube幻灯片菜单截图

您可以使用两种方法从第一个屏幕进入第二个屏幕.您可以点击左上角的YouTube徽标,也可以使用滑动手势将其移到右侧.这已经与G + app不同了.其次,您可以看到操作栏保持不变(与G +不同).最后,为了获得原始屏幕,它就像G +一样工作.

user-interface android android-layout navigation-drawer

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

如何使用DrawerLayout在ActionBar /工具栏上和状态栏下显示?

我在新的材料设计Side Nav规范中看到,您可以在操作栏上和状态栏后面显示抽屉.我该如何实现呢?

android android-appcompat navigation-drawer

391
推荐指数
5
解决办法
21万
查看次数

导航抽屉:如何在启动时设置所选项目?

我的代码完美无缺:每次点击导航抽屉中的项目时,都会选择该项目.

当然我想用默认片段(home)启动应用程序,但导航抽屉没有选择项目.如何以编程方式选择该项目?

public class BaseApp extends AppCompatActivity {

    //Defining Variables
    protected String LOGTAG = "LOGDEBUG";
    protected Toolbar toolbar;
    protected NavigationView navigationView;
    protected DrawerLayout drawerLayout;

    private DateManager db = null;

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

        navigationView = (NavigationView) findViewById(R.id.navigation_view);


        // set the home/dashboard at startup

        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.frame, new DashboardFragment());
        fragmentTransaction.commit();

        setNavDrawer();
    }

    private void setNavDrawer(){

        // Initializing Toolbar and setting it as the actionbar
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        //Initializing NavigationView

        //Setting Navigation View Item …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer

218
推荐指数
10
解决办法
19万
查看次数

不同活动中的相同导航抽屉

我制作了一个工作的导航抽屉,就像它在developer.android.com网站上的教程中所示.但现在,我想使用一个导航抽屉,我在NavigationDrawer.class中为我的应用程序中的多个活动创建.

我的问题是,如果这里有人可以制作一个小教程,这解释了如何使用一个导航抽屉进行多个活动.

在多个活动的答案Android导航抽屉上首先阅读了它

但它对我的项目不起作用

public class NavigationDrawer extends Activity {
public DrawerLayout drawerLayout;
public ListView drawerList;
private ActionBarDrawerToggle drawerToggle;

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawerToggle = new ActionBarDrawerToggle((Activity) this, drawerLayout, R.drawable.ic_drawer, 0, 0) {

        public void onDrawerClosed(View view) {
            getActionBar().setTitle(R.string.app_name);
        }

        public void onDrawerOpened(View drawerView) {
            getActionBar().setTitle(R.string.menu);
        }
    };
    drawerLayout.setDrawerListener(drawerToggle);

    getActionBar().setDisplayHomeAsUpEnabled(true);
    getActionBar().setHomeButtonEnabled(true);

    layers = getResources().getStringArray(R.array.layers_array);
    drawerList = (ListView) findViewById(R.id.left_drawer);
    View header = getLayoutInflater().inflate(R.layout.drawer_list_header, null);
    drawerList.addHeaderView(header, null, false);
    drawerList.setAdapter(new ArrayAdapter<String>(this, …
Run Code Online (Sandbox Code Playgroud)

navigation android drawer android-activity navigation-drawer

198
推荐指数
6
解决办法
22万
查看次数

使用片段时,在Android导航抽屉图像和向上插入符之间切换

当使用导航抽屉时,Android开发人员建议在ActionBar中"只有那些在导航抽屉中表示的屏幕应该实际上具有导航抽屉图像",并且"所有其他屏幕都具有传统的向上克拉".

详情请见:http://youtu.be/F5COhlbpIbY

我正在使用一个活动来控制多个级别的片段,并且可以使导航抽屉图像在所有级别上显示和运行.

创建较低级别的片段时,我可以调用ActionBarDrawerToggle setDrawerIndicatorEnabled(false)隐藏导航抽屉图像并显示向上插入符号

LowerLevelFragment lowFrag = new LowerLevelFragment();

//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout, 
lowFrag, "lowerFrag").addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是当我导航回到最高级别的片段时,向上克拉仍然显示而不是原始的导航抽屉图像.有关如何"刷新"顶级片段上的ActionBar以重新显示导航抽屉图像的任何建议?


汤姆的建议对我有用.这是我做的:

主要活动

此活动控制应用程序中的所有片段.

在准备新片段以替换其他片段时,我将DrawerToggle设置为setDrawerIndicatorEnabled(false):

LowerLevelFragment lowFrag = new LowerLevelFragment();

//disable the toggle menu and show up carat
theDrawerToggle.setDrawerIndicatorEnabled(false);
getSupportFragmentManager().beginTransaction().replace(R.id.frag_layout,   
lowFrag).addToBackStack(null).commit();
Run Code Online (Sandbox Code Playgroud)

接下来,在覆盖中onBackPressed,我通过将DrawerToggle设置为这样来恢复上面的内容setDrawerIndicatorEnabled(true):

@Override
public void onBackPressed() {
    super.onBackPressed();
    // turn on the Navigation Drawer image; 
    // this is called in the LowerLevelFragments
    setDrawerIndicatorEnabled(true)
}
Run Code Online (Sandbox Code Playgroud)

在LowerLevelFragments中

在我修改过的片段中onCreate, …

android android-fragments android-actionbar navigation-drawer

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

如何在新的NavigationView中创建一个简单的分隔符?

Google NavigationView在设计支持库版本22.2.0中引入了该版本,您可以使用菜单资源轻松创建抽屉.

如何在两个项目之间创建简单的分隔线?对项目进行分组不起作用.创建子项目部分会创建一个分隔线,但它需要一个我不想要的标题.

任何帮助,将不胜感激.

android android-support-library navigation-drawer android-design-library navigationview

149
推荐指数
8
解决办法
9万
查看次数

无法捕获工具栏主页按钮单击事件

我已经实现了最新的appcompat库并使用了Toolbaras操作栏.但问题是我无法抓住主页按钮/汉堡包图标点击事件.我试过看了一切,但似乎没有找到类似的问题.

这是我的Activity班级:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    // Set up the drawer.
    navDrawerFragment = 
        (NavigationDrawerFragment) getSupportFragmentManager()
        .findFragmentById(R.id.navigation_drawer);
    navDrawerFragment.setUp(
        R.id.navigation_drawer, 
        (DrawerLayout) findViewById(R.id.drawer_layout), 
        toolbar);
}
Run Code Online (Sandbox Code Playgroud)

这是我的NavigationDrawerFragment类:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        currentSelectedPosition = savedInstanceState.getInt(
            STATE_SELECTED_POSITION);
        fromSavedInstanceState = true;
    }

    // Select either the default item (0) or the last selected item.
    selectItem(currentSelectedPosition);
}

@Override
public void onActivityCreated (Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    // Indicate that this …
Run Code Online (Sandbox Code Playgroud)

android navigation-drawer android-toolbar

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

如何设置自定义ActionBar颜色/样式?

Android Navigation bar在我的项目中使用,我想将动作栏中的顶部颜色更改为红色,我该怎么做?我有这样的事情,

顶黑

我想要这样的东西,

顶红

我怎么能实现这一目标?

android background colors android-actionbar navigation-drawer

85
推荐指数
6
解决办法
20万
查看次数

如何在Android中为Navigation Drawer添加一个部分分隔符?

我有一个像这个图像的导航抽屉.我想添加一个节分隔符(如分隔海王星​​的线).这看起来很简单,但我在网上找不到对我的情况有用的任何内容.

这是我的MainActivity:

public class MainActivity extends Activity {
    private DrawerLayout mDrawerLayout;
    private ListView mDrawerList;
    private ActionBarDrawerToggle mDrawerToggle;

    private CharSequence mDrawerTitle;
    private CharSequence mTitle;
    private String[] mPlanetTitles;

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

        mTitle = mDrawerTitle = getTitle();
        mPlanetTitles = getResources().getStringArray(R.array.planets_array);
        mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        mDrawerList = (ListView) findViewById(R.id.left_drawer);

        // set a custom shadow that overlays the main content when the drawer opens
        mDrawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
        // set up the drawer's list view with items and click listener
        mDrawerList.setAdapter(new ArrayAdapter<String>(this, …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-activity navigation-drawer

84
推荐指数
2
解决办法
6万
查看次数

导航抽屉半透明状态栏无法正常工作

我正在开发Android项目,我正在实现导航抽屉.我正在阅读新的材料设计规范材料设计清单.
规范说滑出窗格应该浮动在其他所有内容之上,包括状态栏,并且在状态栏上是半透明的.

我的导航面板位于状态栏上,但没有任何透明度.我按照Google开发者博客网站上的建议点击了这篇SO帖子中的代码,上面的链接如何使用DrawerLayout显示在ActionBar /工具栏上和状态栏下?.

下面是我的XML布局

<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"
    android:fitsSystemWindows="true">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <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="@color/appPrimaryColour" />
    </LinearLayout>
    <LinearLayout android:id="@+id/linearLayout"
        android:layout_width="304dp"
        android:layout_height="match_parent"
        android:layout_gravity="left|start"
        android:fitsSystemWindows="true"
        android:background="#ffffff">
        <ListView android:id="@+id/left_drawer"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:choiceMode="singleChoice"></ListView>
    </LinearLayout>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

以下是我的应用主题

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorPrimary">@color/appPrimaryColour</item>
        <item name="colorPrimaryDark">@color/appPrimaryColourDark</item>
        <item name="colorAccent">@color/appPrimaryColour</item>
        <item name="windowActionBar">false</item>
        <item name="windowActionModeOverlay">true</item>

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

以下是我的应用程序v21主题

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/appPrimaryColour</item>
    <item name="colorPrimaryDark">@color/appPrimaryColourDark</item>
    <item name="colorAccent">@color/appPrimaryColour</item>
    <item name="windowActionBar">false</item>
    <item name="windowActionModeOverlay">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

下面是我的onCreate方法 …

android navigation-drawer material-design android-5.0-lollipop

81
推荐指数
6
解决办法
9万
查看次数