我有一个片段的xml布局(android.support.v4.app.Fragment)。当第一次添加此片段时,背景drawable显示正常。但是当这个片段被另一个Fragment替换后,再次被替换回来(通过创建一个新实例并使用FragmentTransaction.replace()),背景drawable消失(但并非在所有情况下,请参阅下面)。这是片段的布局xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<include layout="@layout/footer_photos" />
<RelativeLayout
android:id="@+id/pageLayout"
android:background="@drawable/body_background2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@id/footer">
<ImageView
android:id="@+id/page"
android:layout_height="500dp"
android:layout_width="400dp"
android:layout_centerInParent="true"
android:background="#FFF" />
</RelativeLayout>
</RelativeLayout>
有问题的背景是在RelativeLayout中,ID为“pageLayout”。
可能的线索:
编辑:如果将图像加载到ImageView中,则会始终出现相同的问题,然后在其上启动以对话为主题的活动,然后完成。我的解决方案解决了这两种情况。
答案 0 :(得分:1)
找到比上一个更好的解决方案。在片段的onResume()中,只需要这样做:
getView().post(new Runnable() {
@Override
public void run() {
View v = getView();
if (v != null)
v.invalidate();
}
});
它会导致闪烁,但至少它似乎始终如一。
答案 1 :(得分:0)
myImageView.bringToFront();
希望这会有所帮助。
答案 2 :(得分:0)
好的,我在尝试修复另一个问题时解决了这个问题。通过调用page
ImageView上的setLayoutParams()(使用任何布局参数)解决了该问题。这导致pageLayout
RelativeLayout的背景再次出现。问题的原因仍然未知......
答案 3 :(得分:-1)
替换碎片及其背景,这意味着
当片段A被片段B替换时,背景会变为片段B的背景。
如果你没有给片段B提供任何背景信息,那么你可以在片段A上看到片段B.