“可能透支:根元素绘制背景”(“Possible overdraw: Root element pa

2019-06-27 03:01发布

虽然在我的项目运行Android皮棉我碰到这个警告是

可能透支:根元素绘制背景@绘制/主要用一个主题,这也描绘了一个背景

其中推断的主题是@android:style/Theme.NoTitleBar.Fullscreen

谁能给我解释一下这是为什么来了,如何删除它?

我的XML:

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/main" //***LINT warning***
        android:orientation="vertical"
        android:weightSum="3" >

其中,主题定义清单的一部分

 <application
        android:icon="@drawable/ic_logo"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >

Answer 1:

为了优化应用性能(避免透支),你可以做到以下几点:

  • 声明在一个主题res/values/styles.xml

     <style name="MyTheme" parent="android:Theme"> <item name="android:background">@drawable/main</item> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> </style> 

  • 修改清单:

     <application android:icon="@drawable/ic_logo" android:label="@string/app_name" android:theme="@style/MyTheme" > 
  • 删除“我的XML”的背景声明


Answer 2:

更新

退房的评论,或查看这个链接 。 作为马尔钦提到了,在这里我的解决方案是不是一个好办法,因为它可能会导致文物。 我一直在使用它,以避免长时间透支没有任何问题,但总体上可能是没有根据这种技术的切特·哈泽评论规则的拇指。

原来的答案

我发现最好的方法是将其设置为null,则默认背景和应用您在每个布局所需要的背景。

原因是当你在一个主题设置默认背景,或者如上述建议用不同的背景,甚至不同的主题,这意味着整个布局将与后台填写。 在大多数情况下,你并不需要一个背景填充屏幕的100%,因为你有工具栏,页眉,页脚和其他元素在这样的背景下,这将导致透支的顶部。

要应用一个主题空背景:

<style
    name="ThemeName" parent="ParentTheme">
    <item name="android:windowBackground">@null</item>
</style>

要检查透支只是激活你的模拟器/设备上的开发选项显示透支选项。 因为当时在跟踪一些错误,我也不太清楚是完全固定的不信任100个%lint警告。

更多信息: 什么是透支的,为什么是一个问题?



Answer 3:

为什么你这个皮棉警告的原因是,您的活动和线性布局都试图绘制背景。 因此,可视区域绘制两次。

如何调试呢? 运行SDK /工具/ hierarchyviewer和检查视图层次,看看哪些观点具有不显示背景。 (您需要有一个Android设备上运行开发建设ROM)

什么是运行引擎盖下? 需要注意的是,几乎所有的Android主题已经背景指定,这意味着如果你想创建一个覆盖整个屏幕,并用底色一“的LinearLayout”,可要任一组活动的windowBackground =“@空”或去除背景设定线性布局。



文章来源: “Possible overdraw: Root element paints background ”