在阅读了大部分官方 android 文档后,我在不使用Toolbar 对象的情况下设置 Appbar 时遇到了麻烦。有趣的是,这个关于 Menus 的官方页面链接到在 onCreate() 方法中使用 Toolbar 对象。尽管我最近获得了一个工具栏来工作,但我不需要工具栏对象的额外灵活性/自定义,而是选择为我的活动使用各种菜单 xml 文件。问题是:我的选项菜单代码不会产生任何类型的 Appbar ......它只会产生一个空白的白色屏幕,上面有任务栏(电池/时间栏)。一般说明:我不希望支持旧的 SDK (< 7)。此外,我正在使用的手机(LG Stylo3 7.0)在硬件中没有菜单按钮。我的目标是支持 minSdkVersion 21 和 targetSdkVersion 28。我也没有扩展片段。我写了许多其他活动,但如果没有适当的菜单导航,它们的内容就无法访问。以下代码/资源是我写的:应用程序/[包]/MainActivity.javapackage [package];import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.view.MenuInflater;import android.view.MenuItem;import androidx.appcompat.app.AppCompatActivity; import [package].R;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) {// super.onCreateOptionsMenu(menu); MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main_menu, menu); return true;注意:我尝试在 onCreateOptionsMenu() 中调用 super 并在 return 语句中调用它。我也尝试过扩展 AppCompatActivity 而不是 Activity,但我不希望支持早期的 SDK 版本。我已经在 onCreateOptionsMenu() 中设置了断点,调试工具似乎并没有停在这里。也许 onCreateOptionsMenu() 不是从 onStart() 调用的?res/menu/main_menu.xml<menu 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" tools:context=".MainActivity" ></menu>注意:我在此布局中创建了一个工具栏对象,在此之前只工作这个问题与工具栏无关。AndroidStudio 确实允许我预览它,它是一个空白屏幕。注意:我在 res/values/styles.xml 中尝试了各种带/不带 ActionBar 的 android:themes ... 特别是:(Theme.AppCompat.Light.DarkActionBar 和 Theme.AppCompat.NoActionBar)。前一个主题导致空白屏幕,后者导致深灰色。如果需要我省略的其他文件进行进一步诊断,请告诉我。我的假设是它与我正在使用的约束布局有关。
1 回答

墨色风雨
TA贡献1853条经验 获得超6个赞
更改 MainActivity.java 文件构造函数行以扩展 AppCompatActivity
public class MainActivity extends AppCompatActivity {
并将 android:theme 设置为 Theme.AppCompat* 的变体显示了我一直在努力展示的 MainActivity Appbar。接下来是我为找到合适的解决方案所做的更多研究。
为什么会这样……是 AppCompatActivity 和基类 Activity 之间的区别。AppCompatActivity 继承自 Activity 并使用这些主题之一告诉应用程序使用本机 ActionBar 类来提供应用程序栏。一般来说,使用新的 Toolbar 对象似乎是最好的方法,因为它允许更多的自定义(截至 2019 年)。围绕此主题的大多数早期问题都使用过时/不推荐使用的代码,例如 ActionBarActivity。
这是通过根据本文档更改 Activity 的布局文件以包含工具栏来实现的。然后可以使用此问题范围之外的技术适当地修改工具栏的主题。
添加回答
举报
0/150
提交
取消