在工具栏中更改后退图标颜色

时间:2018-10-06 10:52:41

标签: android navigation android-toolbar

我正在将Android组件[(action)] = "parentProperty"navigation一起用于DrawerLayout

NavigationView

一切正常,除了“向上按钮”的颜色与我在操作栏中的标题不同。

工具栏的XML是:

public class MainActivity extends AppCompatActivity {

    private DrawerLayout drawerLayout;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main_activity);
        LoginActivity.toClose.finish();
        LoginViewModel viewModel = ViewModelProviders.of(this).get(LoginViewModel.class);
        Toolbar toolbar = findViewById(R.id.toolbar_menu);
        setSupportActionBar(toolbar);
        ActionBar actionbar = getSupportActionBar();
        assert actionbar != null;

        drawerLayout = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view_menu);
        navigationView.inflateMenu(viewModel.setUserInterface());
        NavController navController = Navigation.findNavController(this, R.id.fragment_main);
        NavigationUI.setupWithNavController(navigationView, navController);
        NavigationUI.setupActionBarWithNavController(this,navController,drawerLayout);
     }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                drawerLayout.openDrawer(GravityCompat.START);
                return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

标题为白色,但图标为黑色。

我的问题是:如何更改该图标的颜色?

即使我将原色更改为白色,并且主题编辑器向我显示了白色图标,当应用程序运行时,颜色仍为黑色。

我正在构建的应用具有minSdkVersion 15 然后在带有API 7 SDK 24的手机中运行它。  我还没有在带有SDK 15的模拟器中运行。

2 个答案:

答案 0 :(得分:2)

使用此样式

<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
        <!-- Customize color of Toolbar -->
        <item name="colorControlNormal">@color/WhiteColor</item>
    </style>

,然后在您的工具栏XML的app:theme="@style/ToolbarTheme"中使用它:

 <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar_menu"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:textColor="#FFF"
        android:textColorPrimary="#FFF"
        app:theme="@style/ToolbarTheme"
        app:layout_constraintTop_toTopOf="parent"
        app:titleTextColor="#FFF"
        app:title="@string/app_name"/>

答案 1 :(得分:2)

新主题(浅色/深色模式)的另一种选择是使用样式和主题。

第一种方法。

  1. 如果您使用默认图标并且在片段(例如)中使用以下内容,则此方法有效:str_match,因此在布局中您必须执行以下操作:
  2. 在您的 xml 应用主题中:
toolbar.setupWithNavController(findNavController())

注意:此解决方案适用于您自己放置在布局中的自己的工具栏,这就是为什么我的主要应用主题是 <style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight.NoActionBar"> ... <item name="drawerArrowStyle">@style/MyDrawerArrowToggleStyle</item> 。但是,我还没有尝试使用默认的 Theme.MaterialComponents.DayNight.NoActionBar,所以也许它也能工作。

  1. 您的抽屉箭头/切换样式:
ActionBar

现在工具栏中的所有默认“<-”图标都将采用您的颜色。它也应该适用于汉堡包图标。但我没有检查,因为我没有导航抽屉。

第二种方法。

当您想要在 <style name="MyDrawerArrowToggleStyle" parent="Widget.AppCompat.DrawerArrowToggle"> <item name="color">@color/your_color_here</item> </style> 中拥有自己的图标或操作时。

  1. 在片段中:
NavigationOnClickListener
  1. 主题:
toolbar.setNavigationOnClickListener { 
   findNavController().navigateUp()
   //plus another actions if required
}
toolbar.setNavigationIcon(R.drawable.your_icon_here)
  1. 我的风格:
<item name="toolbarNavigationButtonStyle">@style/MyAppToolbarNavButtonStyle</item>