Java Android:添加/删除片段时视图布局重置

Java Android:添加/删除片段时视图布局重置,java,android,view,fragment,scale,Java,Android,View,Fragment,Scale,我对android有点陌生,但我对java相当了解 作为一种简单的可伸缩性方法,我使用以下简单功能: public void scaleMyView(float s) { scaleFactor = scaleFactor + s; // s will usually be like 0.1 or -0.1 = 10% size gain/loss View myMainView = findViewById(R.id.MyMainView); Display

我对android有点陌生,但我对java相当了解

作为一种简单的可伸缩性方法,我使用以下简单功能:

public void scaleMyView(float s) {

    scaleFactor = scaleFactor + s;
    // s will usually be like 0.1 or -0.1 = 10% size gain/loss

    View myMainView = findViewById(R.id.MyMainView);
    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int x = size.x;
    int y = size.y;


    myMainView.setScaleX(scaleFactor);
    myMainView.setScaleY(scaleFactor);

    myMainView.layout(0, 0, ((int)(x/scaleFactor)), ((int)(y/scaleFactor)))

    myMainView.setPivotX(0);
    myMainView.setPivotY(getActionBar().getHeight());
}
这正是我想要的,改变了主视图和其中的所有内容的大小,并保持它的位置

现在问题来了:

每当我将片段添加到主视图的子视图时,布局部分都会重置,尽管比例和位置保持不变,但大小会收缩回默认值。 这些片段非常简单,基本上是简单的按钮

我尝试了很多东西,但我仍然不知道在哪里或如何解决这个问题


非常感谢您的帮助

尝试在mainView上使用addOnLayoutChangeListener方法:

myMainView.addOnLayoutChangeListener(new View.OnLayoutChangeListener() {
    @Override
    public void onLayoutChange(
        View view, int i, int i2, int i3, int i4, int i5, int i6, int i7, int i8)
    {
        // set view properties here
    }
});
myMainView.requestLayout();

非常感谢。这正是我想要的。我仍然觉得我做错了什么,我的意思是,我觉得我错过了什么,但是,它正在工作,这才是最重要的。如果你担心这一点,你可以在多个设备上测试它,或者使用不同版本的安卓模拟器。另外,尝试更改当前活动和在当前活动之前打开的其他活动中的方向,然后返回此活动,看看是否不存在任何问题,因此没有任何重要的问题需要担心!不客气。