gpt4 book ai didi

java - 主题、背景颜色和操作栏的交互

转载 作者:行者123 更新时间:2023-11-29 21:44:42 32 4
gpt4 key购买 nike

我无法理解操作栏外观与主题化之间的交互模式。我的应用设置为使用默认主题,我认为它是深色的:

<style name="AppBaseTheme" parent="android:Theme">
</style>

通过应用范围内的样式从应用中删除操作栏会导致主要 Activity 的黑色背景:

    <activity
android:name="com.atlarge.motionlog.MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
>

没有 android:theme="@android:style/Theme.NoTitleBar.Fullscreen" 行, Activity 背景是白色的。如果在 Activity 的 onCreate() 方法中删除操作栏,操作栏也会消失,但背景保持白色:

    ActionBar actionBar = getActionBar();
actionBar.hide();

TL;DR:行为总结:

  • 存在操作栏:白色背景
  • 通过代码删除操作栏:白色背景
  • 通过 XML 删除操作栏:黑色背景

这是为什么呢?有人可以解释(或指向一个好的资源)通过代码与 XML 和背景颜色的操作栏外观交互吗?

最佳答案

在 onCreate 中移除 action bar 只是隐藏了 ActionBar View 。它没有改变主题。

设置android:theme="@android:style/Theme.NoTitleBar.Fullscreen"正在为您的 Activity 设置一个主题,该主题带有该主题层次结构中的任何继承样式。

如果你看一下themes.xml在 android 源代码中,您会在样式中看到 <style name="Theme">有项目 <item name="colorBackground">@android:color/background_dark</item>

然后 <style name="Theme.NoTitleBar">继承了Theme的所有样式套<item name="android:windowNoTitle">true</item>

然后<style name="Theme.NoTitleBar.Fullscreen">继承自 NoTitleBarTheme<item name="android:windowFullscreen">true</item><item name="android:windowContentOverlay">@null</item>

这解释了为什么在应用该样式时背景是深色的。

如果您将主题设置为 Theme.Light.NoTitleBar.Fullscreen你会达到同样的效果,但你会继承<item name="colorBackground">@android:color/background_light</item>来自 <style name="Theme.Light">应该是浅色。

或者,您可以扩展任何您想要的样式并覆盖任何样式。

因此,例如,您可以做类似...

<style name="MyTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
<item name="colorBackground">@color/my_light_color</item>
<item name="windowBackground">@drawable/screen_background_selector_light</item>
</style>

以下资源可能有助于您更深入地理解主题: http://developer.android.com/guide/topics/ui/themes.html http://brainflush.wordpress.com/2009/03/15/understanding-android-themes-and-styles/

如果您想创建或扩展自己的主题,那么查看 android 源代码以了解您可以扩展和覆盖的内容总是值得的: http://developer.android.com/guide/topics/ui/themes.html#PlatformStyles

希望对您有所帮助。

关于java - 主题、背景颜色和操作栏的交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16205056/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com