如何在 AppCompatActivity 中正确设置内容视图?

How do I properly set the content view in AppCompatActivity?

当我在 AppCompatActivity 中调用 setContentView(myView) 方法时,它不是直接设置它,而是调用某种委托,出于某种原因将其包装在一些不需要的布局中。但是,我需要它是装饰视图的直接 child。我已经通过主题禁用了操作栏和 window 标题,不幸的是这没有帮助。如果我这样做 ((ViewGroup)getWindow().getDecorView()).addView(myView) 当所述委托尝试对其不需要的布局执行某些操作并找到我的视图而不是它们时,应用程序会在启动时立即崩溃。最糟糕的是,这种行为绝对没有记录,我在调试时自己发现了这一点,试图理解为什么系统会忽略我的根内容视图(即 DrawerLayout)上的 setFitsSystemWindows(true)

有什么办法可以完全禁止这种行为吗?如果不是,有什么方法可以在使用 appcompat 布局 inflater 时使用系统 Activity class 以支持 pre-Lollipop 上的 per-view 主题?

我不支持任何比 ICS 更早的东西,我在片段中使用工具栏(没有将它们设置为操作栏)所以我的应用程序实际上不需要任何 appcompat 的 activity-related 东西;为我扩展 AppCompatActivity 的唯一原因是它的布局 inflater。

你试过AppCompatDelegate了吗?它是一个帮助程序,可以为您提供兼容行为,而无需您扩展 AppCompatActivity。但是,它可能会将相同的环绕模式应用于您的布局(我自己还没有尝试过),但无论如何值得一看。