【问题标题】:Android UI glitch when setting ActionBar color设置 ActionBar 颜色时的 Android UI 故障
【发布时间】:2014-12-22 11:10:02
【问题描述】:

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

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

它发生在我的 Nexus 5 上,带有 Dalvik 运行时和普通的 Android,我朋友的 Nexus 4 上带有 ART 运行时和 SlimKat rom。但在另一个带有 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 颜色(在应用设置中更改主题)。

【问题讨论】:

  • 通过样式/主题设置actionbarcolor,这会使执行的行变得多余
  • 在此处查看有关样式操作栏背景的官方文档:developer.android.com/training/basics/actionbar/…
  • @user1281750 它不起作用,因为我需要在运行时更改 ActionBar 颜色。

标签: android user-interface android-fragments android-actionbar visual-glitch


【解决方案1】:

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

解决方法是全局禁用Hardware Acceleration,或为发生这种情况的特定活动禁用。还有另一种可能性,即在运行时禁用 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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 2018-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多