您好,我是使用AS进行Android编程的新手。这应该是一个常见/容易的问题,但到目前为止我还没有找到解决方案。
我正在left_
为平板电脑创建right_fragments
和activity_main.xml
标签,其中我希望在right_fragment
中设置背景色(暂时设置为#ffffff
并保持left_fragment
为默认值)。然后Android Lint警告我Overdraw: Painting regions more than once
上有right_fragment
:
我尝试创建一个新主题:
<style name="NoBgTheme" parent="android:Theme.Material.Light.DarkActionBar">
<item name="android:windowBackground">@null</item>
</style>
并将android:theme="@style/NoBgTheme"
添加到right_fragment.xml
,但它无效。
Screenshot of this app w/ Debug GPU Overdraw enabled.
如果我在android:theme=
中将"@style/AppTheme"
从"@style/NoBgTheme"
更改为AndroidManifest.xml
,那就可以了,但所有其他布局都失去了背景。
知道如何修复此OVERDRAW吗? Thx提前。
activity_main.xml中:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:baselineAligned="false"
android:orientation="horizontal">
<fragment
android:id="@+id/left_fragment"
android:name="jerryc05.fragmenttest.LeftFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<fragment
android:id="@+id/right_fragment"
android:name="jerryc05.fragmenttest.RightFragment"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
</LinearLayout>
left_fragment.xml 非常简单,我们可以忽略它。
right_fragment.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:theme="@style/NoBgTheme"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffff">
<TextView
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="This is right fragment"
android:textSize="20sp"
tools:ignore="HardcodedText" />
</LinearLayout>
AndroidManifest.xml 保持不变。
MainActivity.java 保持不变。
答案 0 :(得分:0)
会发生一点透支。如果要在左侧片段和右侧片段显示上修复透支,则需要将nobgtheme设置为主要活动。如果仅在平板电脑布局期间发生这种情况,您可以检查这是否是正在使用的平板电脑布局,并使用此处描述的方法在运行时设置无背景主题:How to change current Theme at runtime in Android
答案 1 :(得分:0)
好吧,我有另一种解决方案。
我在android:theme="@style/NoBgTheme"
之后<activity android:name=".MainActivity"
之后添加了>
。
然后我分别手动将android:background="#f0f0f0"
和android:background="#ffffff"
指定为left_
和right_fragment.xml
。
效果很好!!!
但Android Lint警告仍然存在......(这是一个错误还是我的错?)