我希望我的程序在每个活动中都有相同的背景颜色。所以我将这行代码放在每个layout.xml文件的每个主要布局中。
android:background="@color/background"
到目前为止一切都那么好,它的效果很好看。然而,我最近开始注意到,当我调用新活动时,它首先具有白色背景,其立即变为背景颜色。但是在我的眼睛里总是有这种白色的很短的时间,这真的很烦人。
有谁知道如何避免这个问题?我希望我的活动能够正常使用新的背景颜色。
修改: 我使用的每个活动都有相同的背景。这就是我开始新活动的方式:
startActivity( new Intent( getActivity(), ActivityAlbumContent.class ) );
到目前为止,我只有这一个和MainActivity
,但它也在应用程序启动时MainActivity
首先具有白色背景。我现在只能假设我稍后创建的活动会遇到同样的问题。
这是我的styles.xml。
<style name="CustomTheme" parent="android:Theme">
<item name="android:windowBackground">@color/background</item>
</style>
windowBackground属性以某种方式不存在。我在清单文件中将此主题设置为我的应用程序,但随后崩溃了。
06-30 20:43:49.048: E/AndroidRuntime(15411): FATAL EXCEPTION: main
06-30 20:43:49.048: E/AndroidRuntime(15411): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.davlog.mplayer/com.davlog.mplayer.MainActivity}: java.lang.NullPointerException
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2249)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.access$700(ActivityThread.java:154)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1284)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.os.Handler.dispatchMessage(Handler.java:99)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.os.Looper.loop(Looper.java:137)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.main(ActivityThread.java:5306)
06-30 20:43:49.048: E/AndroidRuntime(15411): at java.lang.reflect.Method.invokeNative(Native Method)
06-30 20:43:49.048: E/AndroidRuntime(15411): at java.lang.reflect.Method.invoke(Method.java:511)
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
06-30 20:43:49.048: E/AndroidRuntime(15411): at dalvik.system.NativeStart.main(Native Method)
06-30 20:43:49.048: E/AndroidRuntime(15411): Caused by: java.lang.NullPointerException
06-30 20:43:49.048: E/AndroidRuntime(15411): at com.davlog.mplayer.MainActivity.onCreate(MainActivity.java:29)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.Activity.performCreate(Activity.java:5255)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
06-30 20:43:49.048: E/AndroidRuntime(15411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2213)
06-30 20:43:49.048: E/AndroidRuntime(15411): ... 11 more
答案 0 :(得分:2)
您可以使用自定义主题中的android:windowBackground
属性来设置活动的背景颜色,包括何时加载活动。
例如,定义此样式:
<style name="Theme.MyApp" parent="android:Theme">
<item name="android:windowBackground">@color/my_app_color</item>
</style>
然后在你的清单中你选择这样的主题:
<application
android:theme="@style/Theme.MyApp">
<!- ... ->
</application>
这消除了为每个布局设置android:background
的需要,并在活动加载时显示适当的颜色。
请注意,如果您支持API 14以上的任何设备,您可能希望拥有一个继承自Holo主题的此主题的values-14/styles.xml
副本。如果您只支持14以上的设备,那么您只需要一个继承Holo主题的主题。