Android 工具栏菜单项仍为空
Android toolbar menu items remain empty
我的 Android 应用有一个 Toolbar
,我想向其中添加菜单项。工具栏显示正确,但展开菜单时菜单项无效。
菜单结构定义在toolbar_menu.xml
:
toolbar_menu.xml
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/about"
android:title="About"
app:showAsAction="never"/>
</menu>
activity定义布局文件中的工具栏activity_layout.xml
activity_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible"
tools:context=".MainActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:title="Welcome"/>
<!-- other widgets follow -->
</androidx.constraintlayout.widget.ConstraintLayout>
而我设置工具栏的 activity class 是 MainActivity.java
MainActivity.java
// import dependencies
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main_activity);
final Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolbar);
this.setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
this.getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
}
感谢下面@GabrieleMariotti 的评论,我意识到问题和解决方案与 相同。
我正在使用继承自 Theme.MaterialComponents.DayNight.DarkActionBar
的自定义主题 Theme.Deck.NoActionBar
。
themes.xml
<style name="Theme.Deck" parent="Theme.MaterialComponents.DayNight.DarkActionBar">...</style>
<style name="Theme.Deck.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:itemTextAppearance">@style/menuItem</item> <!-- added to solve the problem -->
</style>
styles.xml
<!-- added to solve the problem -->
<style name="menuItem" parent="Widget.AppCompat.TextView.SpinnerItem">
<item name="android:textColor">@color/black</item>
</style>
问题是弹出菜单中的文本颜色。
在 Toolbar
.
中添加 app:popupTheme
属性
<androidx.appcompat.widget.Toolbar
app:popupTheme="@style/AppTheme.PopupOverlay"
../>
与:
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar" >
<item name="android:textColor">@color/...</item>
</style>
我的 Android 应用有一个 Toolbar
,我想向其中添加菜单项。工具栏显示正确,但展开菜单时菜单项无效。
菜单结构定义在toolbar_menu.xml
:
toolbar_menu.xml
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/about"
android:title="About"
app:showAsAction="never"/>
</menu>
activity定义布局文件中的工具栏activity_layout.xml
activity_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible"
tools:context=".MainActivity">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:title="Welcome"/>
<!-- other widgets follow -->
</androidx.constraintlayout.widget.ConstraintLayout>
而我设置工具栏的 activity class 是 MainActivity.java
MainActivity.java
// import dependencies
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.main_activity);
final Toolbar toolbar = (Toolbar) this.findViewById(R.id.toolbar);
this.setSupportActionBar(toolbar);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
this.getMenuInflater().inflate(R.menu.toolbar_menu, menu);
return true;
}
}
感谢下面@GabrieleMariotti 的评论,我意识到问题和解决方案与 相同。
我正在使用继承自 Theme.MaterialComponents.DayNight.DarkActionBar
的自定义主题 Theme.Deck.NoActionBar
。
themes.xml
<style name="Theme.Deck" parent="Theme.MaterialComponents.DayNight.DarkActionBar">...</style>
<style name="Theme.Deck.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:itemTextAppearance">@style/menuItem</item> <!-- added to solve the problem -->
</style>
styles.xml
<!-- added to solve the problem -->
<style name="menuItem" parent="Widget.AppCompat.TextView.SpinnerItem">
<item name="android:textColor">@color/black</item>
</style>
问题是弹出菜单中的文本颜色。
在 Toolbar
.
app:popupTheme
属性
<androidx.appcompat.widget.Toolbar
app:popupTheme="@style/AppTheme.PopupOverlay"
../>
与:
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.DayNight.ActionBar" >
<item name="android:textColor">@color/...</item>
</style>