更改工具栏中的返回图标颜色
Change back icon color in toolbar
我将 Android 组件 navigation
用于 DrawerLayout
和 NavigationView
。
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);
}
}
一切正常,除了 "Up button" 与我在操作栏中的标题颜色不同。
工具栏的 XML 是:
<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"
android:theme="@style/Toolbar"
app:layout_constraintTop_toTopOf="parent"
app:titleTextColor="#FFF"
app:title="@string/app_name"/>
标题是白色的,但是图标是黑色的。
我的问题是:如何更改此图标的颜色?
即使我将主色更改为白色并且主题编辑器显示白色图标,当应用 运行ning 时,颜色仍然是黑色。
我正在构建的应用程序具有 minSdkVersion 15
我 运行 它在 phone 和 API 7 SDK 24 中。
我还没有在带有 SDK 15 的模拟器中 运行。
使用这种风格
<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- Customize color of Toolbar -->
<item name="colorControlNormal">@color/WhiteColor</item>
</style>
然后在工具栏 app:theme="@style/ToolbarTheme"
中使用它 XML :
<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"/>
使用新主题(Light/Dark 模式)的另一个选项是使用样式和主题。
第一种方法。
- 如果您使用默认图标并且在片段中(例如)您使用以下内容,则此方法有效:
toolbar.setupWithNavController(findNavController())
,因此在布局中您必须执行以下操作:
- 在您 xml 的应用主题中:
<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
...
<item name="drawerArrowStyle">@style/MyDrawerArrowToggleStyle</item>
注意:此解决方案适用于您自己放置在布局中的工具栏,这就是我的主要应用主题是 Theme.MaterialComponents.DayNight.NoActionBar
的原因。但是,我还没有尝试使用默认值 ActionBar
,所以也许它也能正常工作。
- 你的抽屉arrow/toggle风格:
<style name="MyDrawerArrowToggleStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@color/your_color_here</item>
</style>
现在工具栏中的所有默认“<-”图标都将采用您的颜色。它也应该适用于汉堡包图标。但是我没有检查,因为我没有导航抽屉。
第二种方法。
当您想要在 NavigationOnClickListener
中使用自己的图标或操作时。
- 片段中:
toolbar.setNavigationOnClickListener {
findNavController().navigateUp()
//plus another actions if required
}
toolbar.setNavigationIcon(R.drawable.your_icon_here)
- 在主题中:
<item name="toolbarNavigationButtonStyle">@style/MyAppToolbarNavButtonStyle</item>
- 我的风格:
<style name="MyAppToolbarNavButtonStyle" parent="Widget.AppCompat.Toolbar.Button.Navigation">
<item name="tint">@color/your_color_here</item>
</style>
我将 Android 组件 navigation
用于 DrawerLayout
和 NavigationView
。
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);
}
}
一切正常,除了 "Up button" 与我在操作栏中的标题颜色不同。
工具栏的 XML 是:
<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"
android:theme="@style/Toolbar"
app:layout_constraintTop_toTopOf="parent"
app:titleTextColor="#FFF"
app:title="@string/app_name"/>
标题是白色的,但是图标是黑色的。
我的问题是:如何更改此图标的颜色?
即使我将主色更改为白色并且主题编辑器显示白色图标,当应用 运行ning 时,颜色仍然是黑色。
我正在构建的应用程序具有 minSdkVersion 15 我 运行 它在 phone 和 API 7 SDK 24 中。 我还没有在带有 SDK 15 的模拟器中 运行。
使用这种风格
<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
<!-- Customize color of Toolbar -->
<item name="colorControlNormal">@color/WhiteColor</item>
</style>
然后在工具栏 app:theme="@style/ToolbarTheme"
中使用它 XML :
<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"/>
使用新主题(Light/Dark 模式)的另一个选项是使用样式和主题。
第一种方法。
- 如果您使用默认图标并且在片段中(例如)您使用以下内容,则此方法有效:
toolbar.setupWithNavController(findNavController())
,因此在布局中您必须执行以下操作: - 在您 xml 的应用主题中:
<style name="Theme.MyApp" parent="Theme.MaterialComponents.DayNight.NoActionBar">
...
<item name="drawerArrowStyle">@style/MyDrawerArrowToggleStyle</item>
注意:此解决方案适用于您自己放置在布局中的工具栏,这就是我的主要应用主题是 Theme.MaterialComponents.DayNight.NoActionBar
的原因。但是,我还没有尝试使用默认值 ActionBar
,所以也许它也能正常工作。
- 你的抽屉arrow/toggle风格:
<style name="MyDrawerArrowToggleStyle" parent="Widget.AppCompat.DrawerArrowToggle">
<item name="color">@color/your_color_here</item>
</style>
现在工具栏中的所有默认“<-”图标都将采用您的颜色。它也应该适用于汉堡包图标。但是我没有检查,因为我没有导航抽屉。
第二种方法。
当您想要在 NavigationOnClickListener
中使用自己的图标或操作时。
- 片段中:
toolbar.setNavigationOnClickListener {
findNavController().navigateUp()
//plus another actions if required
}
toolbar.setNavigationIcon(R.drawable.your_icon_here)
- 在主题中:
<item name="toolbarNavigationButtonStyle">@style/MyAppToolbarNavButtonStyle</item>
- 我的风格:
<style name="MyAppToolbarNavButtonStyle" parent="Widget.AppCompat.Toolbar.Button.Navigation">
<item name="tint">@color/your_color_here</item>
</style>