【问题标题】:Change ActionBarDrawer toggle icon when using v7 library使用 v7 库时更改 ActionBarDrawer 切换图标
【发布时间】:2015-09-09 18:54:21
【问题描述】:

我想使用自定义图像代替用于在 android 中切换导航抽屉的默认图标。我该怎么做? 这是我想要更改的图像。

【问题讨论】:

    标签: android navigation-drawer toolbar


    【解决方案1】:

    使用以下代码设置您的自定义 ActionBar 切换按钮。

    mDrawerToggle.setDrawerIndicatorEnabled(false);
    
    // mDrawerToggle.setHomeAsUpIndicator(R.drawable.menu_icon);
    mToolbar.setNavigationIcon(R.drawable.menu_icon);
    mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
    
            @Override
            public void onClick(View v) {
                mDrawerLayout.openDrawer(Gravity.LEFT);
            }
    });
    

    【讨论】:

    • 这么简单的答案,但我花了几十年的时间摸不着头脑。谢谢@vishal。
    • 我认为在您的主题或样式中更改它是一种更好的做法,而不是以编程方式。不过仍然可以达到目的。
    【解决方案2】:

    您可以使用 style.xml 进行更改

     <style
        name="BaseTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="homeAsUpIndicator">@drawable/menu</item>
        <item name="android:textColorPrimary">@android:color/white</item>
    </style>
    

    【讨论】:

      【解决方案3】:

      @Arya 给出了一个使用 styles.xml 的好例子:

      <style name="BaseTheme" parent="Theme.AppCompat.NoActionBar">
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="homeAsUpIndicator">@drawable/menu</item>
        <item name="android:textColorPrimary">@android:color/white</item>
      </style>
      

      您也可以通过编程方式进行:

      public void setTitle(String title, int homeAsUpIndicator) {
        if (getSupportActionBar() != null) {
          getSupportActionBar().setTitle(title);
          getSupportActionBar().setDisplayHomeAsUpEnabled(true);
          getSupportActionBar().setHomeAsUpIndicator(homeAsUpIndicator);
        }
      }
      

      然后在您的 onCreate() 方法中,您可以使用向上指示符 ican 作为资源调用 setTitle 方法。

      注意:这是在新工具栏上使用支持操作栏。

      【讨论】:

        【解决方案4】:

        要更改导航菜单的图标,您需要在 ActionBarDrawerToggle 对象中定义您的图像,如下所示: mDrawerToggle = 新的 ActionBarDrawerToggle(这个, mDrawerLayout, 您的 IMAGE_SOURCE 在这里, R.string.drawer_open, R.string.drawer_close)

        如果你发现任何困难,那么你可以评论它。

        【讨论】:

          【解决方案5】:

          我使用了自定义操作栏并自己处理了后退操作。我认为,这是最好的方式。 PFB xml:

          <?xml version="1.0" encoding="utf-8"?>
          <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:custom="http://schemas.android.com/apk/res-auto"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="@android:color/transparent"
              android:gravity="center_vertical"
              android:orientation="horizontal"
              android:layout_margin="@dimen/outer_padding" >
          
              <ImageView
                  android:id="@+id/btnBack"
                  style="@style/back_button_style"
                  android:layout_alignParentLeft="true"
                  android:layout_alignParentStart="true"
                  android:layout_centerVertical="true"
                  android:src="@drawable/white_arrow" />
          
              <com.example.widgets.CustomTextView
                  android:id="@+id/tvTitleImage"
                  style="@style/actionbar_text_style"
                  android:layout_centerInParent="true"
                  android:layout_centerVertical="true"
                  android:layout_toRightOf="@+id/btnBack"
                  android:padding="@dimen/outer_padding"
                  android:text="@string/requests_text"
                  custom:typefaceAsset="@string/berlin_bold" />
          
              <ImageView
                  android:id="@+id/btnAdd"
                  style="@style/back_button_style"
                  android:layout_width="@dimen/actionbar_menu_icon_dim"
                  android:layout_height="@dimen/actionbar_menu_icon_dim"
                  android:layout_centerVertical="true"
                  android:layout_toLeftOf="@+id/ivSearch"
                  android:src="@drawable/app_icon" />
          
              <ImageView
                  android:id="@+id/ivSearch"
                  style="@style/back_button_style"
                  android:layout_width="@dimen/actionbar_menu_icon_dim"
                  android:layout_height="@dimen/actionbar_menu_icon_dim"
                  android:layout_alignParentRight="true"
                  android:layout_centerVertical="true"
                  android:src="@drawable/app_icon" />
          
          </RelativeLayout>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2016-12-10
            • 1970-01-01
            • 2014-12-27
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-03-29
            相关资源
            最近更新 更多