相关疑难解决方法(0)

动作栏与片段导航

我有三个选项卡的标签动作条/ viewpager布局说,,和Ç.在标签Ç标签(片段),我加入另一片段说片段d.同

 DFragment f= new DFragment();
 ft.add(android.R.id.content, f, "");
 ft.remove(CFragment.this);
 ft.addToBackStack(null);
 ft.commit();
Run Code Online (Sandbox Code Playgroud)

我在DFragment的onResume中修改了操作栏以添加按钮:

ActionBar ab = getActivity().getActionBar();
ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
ab.setDisplayHomeAsUpEnabled(true);
ab.setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)

现在在DFragment中,当我按下硬件(手机)后退按钮时,我返回到选择了CFragment的原始选项卡(ABC)布局.如何通过操作栏按钮实现此功能?

android android-fragments android-actionbar

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

工具栏导航汉堡包图标丢失

我正在寻找一种方法来使用Drawer/DrawerToggle显示汉堡图标whitout并使用Android中包含的默认图标 在此输入图像描述

通过设置getSupportActionBar().setDisplayHomeAsUpEnabled(true);它显示后退箭头而不是hambuerger.Stackoverflow上的其他帖子(像这样或者这样)使用DrawerLayout或自定义drawable.我在Android源上找不到汉堡图标的矢量或png.

你知道如何在android/support库中找到原始的汉堡包图标吗?(或如何显示)

注意:可以在google.com/design网站上找到Vector和png: http ://www.google.com/design/spec/resources/sticker-sheets-icons.html#

在我的活动中

mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeButtonEnabled(true);

mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Log.d(LOG_TAG, "navigation clicked");
    }
});
Run Code Online (Sandbox Code Playgroud)

布局文件

<android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:minHeight="?attr/actionBarSize"
    android:background="?attr/colorPrimary"
    app:theme="@style/ThemeOverlay.AppCompat.ActionBar"/>
Run Code Online (Sandbox Code Playgroud)

Styles.xml

<!-- Base application theme. -->
<style name="Theme.AppTheme" parent="Theme.AppCompat.Light.NoActionBar">


    <item name="colorPrimary">@color/primaryDef</item>
    <item name="colorPrimaryDark">@color/primaryDarkDef</item>
    <item name="colorAccent">@color/primaryDef</item>

    <!-- Remove the actionbar shadow-->
    <item name="android:windowContentOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android android-support-library material-design android-toolbar

68
推荐指数
9
解决办法
10万
查看次数

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

设置

我有一个活动,其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万
查看次数

更改抽屉图标背对背箭头

我正在使用新的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万
查看次数

工具栏 - 只需一个活动即可从抽屉切换到后退按钮

我一直在寻找如何在抽屉打开/关闭图标(从汉堡包到箭头)到简单的向后箭头之间切换的方法.我的应用程序目前只有一个Activity在几个片段之间切换.有一次,我想在一个主要片段(即抽屉中的一个片段)之间转换为分层次在前一个片段下的片段(即"添加新片段").在这个新片段中,我想让工具栏显示后退按钮而不是抽屉按钮.

我一直在环顾四周,尝试不同的解决方案.以下是最值得注意的:

目前,我正在考虑一种创建自定义图标的漫长而艰巨的方法,我隐藏并显示(并隐藏/显示本机抽屉图标).但是,有没有更好的方法在抽屉和后退按钮之间切换?

作为一个侧面相关的问题,我一直在查看Material Design文档,并且一些示例在左上角有一个X. 与实现抽屉vs后退/向上按钮相比,实现起来有多么不同?

谢谢〜

编辑:

我可以弄清楚如何替换图标,但我如何获得点击事件?

到目前为止,这是我最好的领导:

我现在尝试过的:

  • 必要时禁用DrawerToggle(即mDrawerToggle.setDrawerIndicatorEnabled(useDrawer);)
  • 在我的NavigationDrawerFragment,我的Activity中添加了onOptionsItemSelected中的日志,以及我正在测试哪个运行的DialogFragment if item.getItemId() == android.R.id.home为true.这些日志语句都没有

为了更好的上下文,我现在有一个全屏片段,在菜单中添加一个"保存"按钮,并将抽屉图标更改为"X".片段可以获取保存菜单事件,但是在点击X时甚至不能获得活动和抽屉.

EDIT2:

根据要求,这里有一些代码.请注意,这都是来自这个我正在积极研究的Github回购(注意我在这里或那里有一些无用的功能来进行快速测试).

ActivityMain:

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

    // Add the toolbar
    mToolbar = (Toolbar) findViewById(R.id.toolbar);
    if (mToolbar != null) {
        setSupportActionBar(mToolbar);
    }

    // Initialize the drawer
    mNavigationDrawerFragment = (NavigationDrawerFragment)
            getSupportFragmentManager().findFragmentById(R.id.navigation_drawer);

    // Set up the drawer
    mNavigationDrawerFragment.setUp(
            R.id.navigation_drawer,
            (DrawerLayout) findViewById(R.id.drawer_layout),
            mToolbar); …
Run Code Online (Sandbox Code Playgroud)

navigation android android-fragments

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

调用ActionBarDrawerToggle.setDrawerIndicatorEnabled后,向上箭头不显示(false)

标题说明了一切.当我打电话给mDrawerToggle.setDrawerIndicatorEnabled(false)我时,我不想再显示" hamburger"图标,而是向后导航箭头.

不幸的是,当我调用此方法时,标题显示时没有向后箭头,也没有"汉堡包"图标.再次设置drawerIndicatorEnabled为true后,它再次显示"汉堡包"图标.

我设置getSupportActionBar().setDisplayHomeAsUpEnabled(true)getSupportActionBar().setDisplayShowHomeEnabled(true)

编辑: 基本上这里建议的解决方案:更改抽屉图标背对背箭头不知何故不给我后退箭头.

有谁知道这个问题的解决方案?非常感谢你!

android navigation-drawer

16
推荐指数
3
解决办法
7531
查看次数

从ICS ActionBar切换到Lollipop工具栏后,缺少导航图标

我有一个活动,包含许多片段,使用操作栏和导航抽屉.它启用了"home as up".我已经实现了正确的逻辑,只有顶级片段显示动作栏抽屉切换图标,其他片段显示箭头.我通过以下方式实现了

mDrawerToggle.setDrawerIndicatorEnabled(false);
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, mDrawerList);
Run Code Online (Sandbox Code Playgroud)

现在旧的v4支持库ActionBarDrawerToggle已被弃用.我已经和new一起切换到v7版本Toolbar以获得Material Design外观.在抽屉打开之后"向上"箭头被正确显示,但是当执行上述代码时它完全消失.

这是支持库中的错误还是我必须做一些不同的事情来显示"向上"箭头而不是抽屉指示器?

android android-ui android-actionbar-compat android-5.0-lollipop android-toolbar

13
推荐指数
2
解决办法
8891
查看次数

Android导航抽屉显示较低级别片段的指示器

我有一些问题将导航抽屉功能切换到较低级别片段的向上功能.我已阅读此主题以设法显示向上指示器.但是当按下按钮时,它会打开导航抽屉,而不是回到之前的片段.我无法在EditUserFragment中将操作栏标题设置为"编辑配置文件".我正在使用Android Studio中提供的导航抽屉模板.

我有三个级别:

  1. 带有导航抽屉的MainActivity,包括Home和Profile项目
  2. UserFragment标题为"个人资料",其中包含一个选项,可以显示EditUserFragment
  3. EditUserFragment(较低级别片段)由UserFragment触发


主要活动

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

    drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
    drawerToggle = new ActionBarDrawerToggle(this, drawerLayout,
            R.drawable.ic_launcher, R.string.navigation_drawer_open,
            R.string.navigation_drawer_close);
}

@Override
public void onBackPressed() {
    super.onBackPressed();
    // this won't change the drawer indicator back
    drawerToggle.setDrawerIndicatorEnabled(true);
    // this works
    drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}

public void onSectionAttached(int number) {
    // Show the corresponding title on the action bar when clicked and open corresponding …
Run Code Online (Sandbox Code Playgroud)

navigation android navigation-drawer

11
推荐指数
1
解决办法
2992
查看次数

向上导航(操作栏的后退箭头)不适用于片段

我将抽屉布局作为我活动的基本布局,我正在替换这个抽屉布局内的框架上的两个碎片.第一个片段未添加到片段的后栈中.我在我的活动中显示汉堡包图标(我还想在我的第一个片段中使用抽屉菜单).在第二个片段中,我禁用了汉堡包图标mActionBarDrawerToggle.setDrawerIndicatorEnabled(false)并启用了后退按钮actionBar.setDisplayHomeAsUpEnabled(true).

在第一个片段onResume我通过mActionBarDrawerToggle.setDrawerIndicatorEnabled(true)启用了汉堡包图标,这样当用户从第二个片段按下按钮(硬件和动作栏的向上按钮)时,用户将返回第一个片段并启用汉堡包图标.一切都很好,只是我无法从第二个片段动作栏后退按钮返回.我无法点击它.以下是我的代码: -

活动代码

if (Utility.isLargeScreen(this))
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    else
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    mHiddenGemsApplication = (HiddenGemsApplication) getApplication();

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    initViews();

    setSupportActionBar(mToolbar);
    ActionBar actionBar = getSupportActionBar();
    if (actionBar != null) {
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayHomeAsUpEnabled(true);
    }
    mTextViewActionBarTitle.setText(getString(R.string.app_name));

    mActionBarDrawerToggle = new ActionBarDrawerToggle(HomeActivity.this, mDrawerLayout, mToolbar, R.string.open_drawer, R.string.close_drawer) {

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
        }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
        }
    };

    mDrawerLayout.setDrawerListener(mActionBarDrawerToggle);

    mActionBarDrawerToggle.syncState();

    mFragmentManager = getSupportFragmentManager();

    replaceFragment(new CategoryFragment(), getString(R.string.app_name), CategoryFragment.TAG);

 @Override
public void onBackPressed() {

    if (mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
        mDrawerLayout.closeDrawers();
        return;
    } …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments android-actionbar android-toolbar

8
推荐指数
1
解决办法
3537
查看次数