虽然在我的项目运行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" >
为了优化应用性能(避免透支),你可以做到以下几点:
声明在一个主题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”的背景声明
更新
退房的评论,或查看这个链接 。 作为马尔钦提到了,在这里我的解决方案是不是一个好办法,因为它可能会导致文物。 我一直在使用它,以避免长时间透支没有任何问题,但总体上可能是没有根据这种技术的切特·哈泽评论规则的拇指。
原来的答案
我发现最好的方法是将其设置为null,则默认背景和应用您在每个布局所需要的背景。
原因是当你在一个主题设置默认背景,或者如上述建议用不同的背景,甚至不同的主题,这意味着整个布局将与后台填写。 在大多数情况下,你并不需要一个背景填充屏幕的100%,因为你有工具栏,页眉,页脚和其他元素在这样的背景下,这将导致透支的顶部。
要应用一个主题空背景:
<style
name="ThemeName" parent="ParentTheme">
<item name="android:windowBackground">@null</item>
</style>
要检查透支只是激活你的模拟器/设备上的开发选项显示透支选项。 因为当时在跟踪一些错误,我也不太清楚是完全固定的不信任100个%lint警告。
更多信息: 什么是透支的,为什么是一个问题?
为什么你这个皮棉警告的原因是,您的活动和线性布局都试图绘制背景。 因此,可视区域绘制两次。
如何调试呢? 运行SDK /工具/ hierarchyviewer和检查视图层次,看看哪些观点具有不显示背景。 (您需要有一个Android设备上运行开发建设ROM)
什么是运行引擎盖下? 需要注意的是,几乎所有的Android主题已经背景指定,这意味着如果你想创建一个覆盖整个屏幕,并用底色一“的LinearLayout”,可要任一组活动的windowBackground =“@空”或去除背景设定线性布局。