5

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

在片段之间切换时,有时 UI 会出现混乱,请在下方创建一个故障。

在此处输入图像描述

它发生在我的带有 Dalvik 运行时和股票 Android 的 Nexus 5 上,以及我朋友的带有 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>

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

activity.getActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor(getCurrentTheme(activity))));

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

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

4

1 回答 1

4

几天前我在运行时为 ActionBar 应用背景颜色时遇到了这个问题。这是在运行库存 Android 5.0 的 Nexus 5 上,我在此问题的回复中建议的解决方法取得了成功:问题 1760

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

全局禁用硬件加速

AndroidManifest.xml

<application android:hardwareAccelerated="false" ...>

禁用 Activity 的硬件加速

AndroidManifest.xml

<application android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>

禁用视图的硬件加速

在运行时

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
于 2014-12-22T03:10:02.090 回答