设置ActionBar颜色时的Android UI故障

yac*_*00b 5 user-interface android android-fragments visual-glitch android-actionbar

我和朋友一起创建了一个Android应用程序,我有一个与UI相关的奇怪问题.

当在片段之间切换时,有时UI倾向于加扰,从而产生下面显示的故障.

在此输入图像描述

它发生在我的带有Dalvik运行时的Nexus 5和Android的股票以及我的朋友的带有ART运行时和SlimKat rom的Nexus 4上.但是在具有Dalvik运行时和4.4.2(AOSB rom)的另一个Nexus 5上无法观察到.奇怪的是,在我更新到应用程序的最新版本之前,它没有发生.

下面是使用的布局,其中main_fragment是我Fragment使用事务处理的地方.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >

    <FrameLayout
        android:id="@+id/main_fragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </FrameLayout>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

我发现执行此行时会出现故障,并且我在setBackgroundDrawable方法中放置的内容无关紧要:

activity.getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(getCurrentTheme(activity))));
Run Code Online (Sandbox Code Playgroud)

还有人有这个问题吗?或者也许有人知道解决方法或如何使其工作?

编辑:我需要在运行时更改ActionBar颜色(在应用程序设置中更改主题).

sav*_*nto 4

几天前,我在运行时向 ActionBar 应用背景颜色时遇到了这个问题。这是在运行原生 Android 5.0 的 Nexus 5 上,我成功地采用了本期回复中建议的解决方法:问题 1760

解决方法是全局禁用硬件加速或针对发生这种情况的特定活动禁用硬件加速。还有另一种可能性,那就是在运行时禁用视图的硬件加速,但我不确定如何将其应用于 ActionBar。

全局禁用硬件加速

AndroidManifest.xml

<application android:hardwareAccelerated="false" ...>
Run Code Online (Sandbox Code Playgroud)

禁用活动的硬件加速

AndroidManifest.xml

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>
Run Code Online (Sandbox Code Playgroud)

禁用视图的硬件加速

运行时

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
Run Code Online (Sandbox Code Playgroud)