【问题标题】:Android: view layout resetting when adding/removing fragmentsAndroid:添加/删除片段时视图布局重置
【发布时间】:2014-08-08 20:25:43
【问题描述】:

我对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());
}

这正是我想要的,改变主视图和它的大小并保持它的位置。

现在问题来了:

每当我将片段添加到该主视图的子视图时,“布局”部分都会重置,尽管比例和位置保持不变,但尺寸会缩小回默认值。 (片段很简单,基本上就是简单的按钮。)

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

非常感谢任何帮助!

【问题讨论】:

    标签: java android view fragment scale


    【解决方案1】:

    尝试在你的 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();
    

    【讨论】:

    • 谢谢!这正是我想要的。我仍然觉得我做错了什么,我的意思是,我觉得我错过了一些东西,但是,它正在发挥作用,这是最重要的。
    • 如果你担心这个,你可以在不同版本的android的多个设备(或模拟器)上测试它。还要尝试改变当前活动和在当前活动前面打开的其他活动的方向,然后回到这个活动,看看是否没有问题,所以没有什么重要的担心!不客气。
    猜你喜欢
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 2023-01-04
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多