我知道这个主题有很多问题但没有一个能解决我的问题。我有一个带有viewpager的标签布局。此viewpager有5个片段。其中一个是“我的档案”。单击此片段中的任何项目时,将替换为另一个片段。但我的代码实际上并没有取代。新片段位于旧片段下方,两者都是可见的,显然顶部的片段是可点击的(旧片段)。一种解决方案包括将背景颜色设置为白色或其他颜色。我无法做到这一点,因为我的应用程序具有透明背景。
下面是截图:
下面是我替换片段的代码:
ready() {
super.ready();
var self = this;
self.canvas = self.__canvas = new fabric.Canvas(self.$.convertCanvas);
var height = window.innerHeight - 48;
var width = window.innerWidth - 300;
self.canvas.setHeight(height);
self.canvas.setWidth(width);
fabric.Image.fromURL('img/viper-board.png',function(oImg){
oImg.set({
left:10,
top:10
});
self.canvas.add(oImg);
});
}
答案 0 :(得分:0)
首先,从片段开始片段是一种不好的做法。而不是在Activity
中创建一个方法,
public void switchToSecondFragment(){
FragmentManager manager = getSupportFragmentManager();
SecondFragment fragment = new SecondFragment();
FragmentTransaction transaction = manager.beginTransaction();
transaction.replace(R.id.container, fragment).addToBackStack("tag");
transaction.commit();
}
当您想要启动Second Fragment
时,请将其作为
((MyActivity) getActivity()).startSecondFragment();
答案 1 :(得分:0)
当我们动态替换片段时,较旧片段的所有子视图都会在较新片段的背景中显示(如果较新片段的背景颜色是透明的)。在这种情况下,我们应该对较旧的片段进行所有子视图以隐藏其可见性。
注意:在较旧的片段中隐藏子视图的可见性时,如果其他视图位置取决于子视图,则使用View.INVISIBLE而不是View.GONE进行隐藏。因为-
在[文档]中,您可以这样说
View.GONE 此视图是不可见的,并且不占用任何空间 布局目的。
View.INVISIBLE 此视图不可见,但仍会占用空间以用于布局。
因此,如果在视图依赖时使用View.GONE,则实际上是从布局中删除了它,这可能会干扰其他位置视图。