【问题标题】:Material "close" button in Toolbar instead of Back工具栏中的材质“关闭”按钮而不是返回
【发布时间】:2015-01-23 09:00:42
【问题描述】:

我在 Google 的收件箱应用程序中看到,在撰写新电子邮件时,工具栏中的后退按钮(箭头)有一个“关闭”按钮(见图)。

我怎样才能做到这一点?

【问题讨论】:

    标签: android android-actionbar material-design


    【解决方案1】:

    使用

    this.getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_action_close);
    

     

    实现这一目标。

    您可以创建自己的关闭图标或从 GitHub 上的material design icon set 获取。另外,在上面的行之前添加此行以使关闭功能作为后退箭头。

    this.getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    

    【讨论】:

    • 它不起作用。它不会用新图标替换后退箭头,两者都会出现。此外,使用此解决方案,图标不会获得“colorPrimaryDark”属性。
    • 它有效,但不是我想要的。我希望像后退图标一样使用“colorPrimaryDark”。但似乎“关闭”图标不是 SDK 的一部分。谢谢@AlokNair!
    • 在使用 ActionBarActivity 并且在清单中指定 PARENT 时工作正常。 +1 的答案。谢谢老哥!
    • 我发现必须在 SetHomeAsUpIndicator 之前调用 setDisplayHomeAsUpEnabled 否则图标不会被替换。
    • 又如何变回原来的样子?
    【解决方案2】:

    您需要在清单中定义一个父级,然后如果使用支持应用栏,则覆盖 onSupportNavigationUp()。另外,请访问这个方便的站点以获取图标包:https://www.google.com/design/icons/

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        setContentView(R.layout.yourAwesomeLayout);
    
        setupToolBar();    
    }
    
    private void setupToolBar() {
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    
        if (toolbar == null) return;
    
        setSupportActionBar(toolbar);
    
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    
        getSupportActionBar().setHomeAsUpIndicator(R.drawable.ic_close_white_24dp);
    }
    
    @Override
    public boolean onSupportNavigateUp() {
        finish(); // close this activity as oppose to navigating up
    
        return false;
    }
    

    【讨论】:

    • 你有什么理由从onSupportNavigateUp()返回false?文档说它只是一个成功的标志
    【解决方案3】:

    抱歉回复晚了。 我为您找到了最简单的解决方案。最重要的是,答案对我不起作用(because i want to use toolbar not actionBar due to theming)。所以尝试通过xml布局添加关闭按钮。并且有效。

    这里是向工具栏添加关闭按钮的 xml 语法(v7)。

    app:navigationIcon="@drawable/ic_close_black_24dp"
    

    这里是输出图像

    【讨论】:

    • @drawable/ic_close_black_24dp 来自哪里?
    • @CACuzcatlan 这只是他在可绘制文件夹中的随机图像。你可以选择任何图标。
    • @CACuzcatlan 你可以在 Android Studio 矢量资源中找到它。
    【解决方案4】:
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    toolbar.setTitle("Search");
    toolbar.setNavigationIcon(R.drawable.abc_ic_clear_mtrl_alpha);
    setSupportActionBar(toolbar);
    

    【讨论】:

      【解决方案5】:

      在清单中定义父活动的另一种方法是在 onOptionsItemSelected 方法中处理要执行的操作,如下例所示:

       @Override
      public boolean onOptionsItemSelected(MenuItem item){
          switch (item.getItemId()) {
              // Respond to the action bar's Up/Home/back button
              case android.R.id.home:
                  finish();
                  break;
          }
          return super.onOptionsItemSelected(item);
      }
      

      【讨论】:

        【解决方案6】:

        你可以定义一个样式:

        <style name="Theme.Toolbar.Clear">
            <item name="toolbarNavigationIcon">@drawable/abc_ic_clear_mtrl_alpha</item>
        </style>
        

        并在您的主题中使用它:

        <style name="Theme.Clear">
            <item name="toolbarTheme">@style/Theme.Toolbar.Clear</item>
        </style>
        

        【讨论】:

          猜你喜欢
          • 2021-10-09
          • 1970-01-01
          • 2016-05-02
          • 2019-06-14
          • 1970-01-01
          • 1970-01-01
          • 2020-04-23
          • 2016-11-10
          • 1970-01-01
          相关资源
          最近更新 更多