我为我的应用程序使用 Theme.AppCompat.DayNight.NoActionBar
主题。当我加载 adMob interstital 时,一些颜色在“夜间”模式下被破坏(即在 RecyclerView 中)。
屏幕:
那些不正确的颜色来自“notnight”值。 当我关闭应用程序并再次运行时,一切正常。 当我终止应用程序时,我遇到了同样的情况。
Activity 代码:
public class MainActivity extends AppCompatActivity {
static {
AppCompatDelegate.setDefaultNightMode(
AppCompatDelegate.MODE_NIGHT_AUTO);
}
private ArrayList<String> planetList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
populateRecycler();
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(layoutManager);
PlanetAdapter adapter = new PlanetAdapter(planetList, getApplicationContext());
recyclerView.setAdapter(adapter);
InterstitialAd interstitialAd = new InterstitialAd(this);
interstitialAd.setAdUnitId("ca-app-pub-543543543/543543543");
AdRequest adRequest = new AdRequest.Builder().build();
interstitialAd.loadAd(adRequest);
}
private void populateRecycler() {
for (int i = 0; i < 20; i++) {
planetList.add("TEST");
}
}
}
当我评论 interstitialAd.loadAd(adRequest)
时一切正常。
你可以在这里找到整个项目: github
最佳答案
这个问题应该是由 WebView
重置 UI 模式引起的,这可以通过手动实例化 WebView
来解决。
执行此操作后我还没有看到问题(在这个特定应用程序的 Application.oncreate()
中):
if (nightMode != AppCompatDelegate.MODE_NIGHT_NO) {
Log.d(TAG, "Manually instantiating WebView to avoid night mode issue.");
try {
new WebView(getApplicationContext());
} catch (Exception e) {
Log.e(TAG, "Got exception while trying to instantiate WebView to avoid night mode issue. Ignoring problem.", e);
}
}
AppCompatDelegate.setDefaultNightMode(nightMode);
来源:https://groups.google.com/forum/#!msg/google-admob-ads-sdk/OZzHq_-wAFY/K50jClZcBAAJ
关于android - 加载 Admob/Firebase 广告后,DayNight 主题中的颜色不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44035654/