gpt4 book ai didi

android - 如果所有 subview 都不能水平放置,如何将布局方向更改为垂直

转载 作者:行者123 更新时间:2023-11-29 15:39:18 25 4
gpt4 key购买 nike

我需要根据按钮是否水平放置来更改线性布局的方向。例如,如果我们有两个适合屏幕总宽度的按钮,我会在水平 LinearLayout 中显示它们,但如果它们不适合,我需要在垂直布局中显示它们。

我尝试了以下代码,但由于第三个按钮会自行调整大小并开始垂直移动以适应边界,因此子项计数最终仍小于宽度。有没有办法在不发生这种变化的情况下计算按钮的宽度?

mButtonsLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
int childCount = mButtonsLayout.getChildCount();
int childWidth = 0;
for (int i = 0; i < childCount; i++ ) {
View child = mButtonsLayout.getChildAt(i);
childWidth += child.getWidth();
}

if (mButtonsLayout.getMeasuredWidth() < childWidth) {
mButtonsLayout.setOrientation(LinearLayout.VERTICAL);
} else {
mButtonsLayout.setOrientation(LinearLayout.HORIZONTAL);
}

ViewTreeObserver viewTreeObserver = mButtonsLayout.getViewTreeObserver();
if (viewTreeObserver.isAlive()) {
viewTreeObserver.removeGlobalOnLayoutListener(this);
}
}
});
}

这是第三个按钮改变自身以适应的方式。 我想要的结果是,如果所有按钮都无法水平放置,请将方向更改为垂直,以便按钮显示在彼此之上。

enter image description here

最佳答案

更新:今天 ConstraintLayout 2.0 实现了一个名为 Flow 的助手做完全一样的事

参见:https://www.bignerdranch.com/blog/constraintlayout-flow-simple-grid-building-without-nested-layouts/


这不能回答您的问题,但我认为这是实现您想要的一个很好的选择。

使用谷歌的 flexbox-layout如果没有水平位置,它允许您自动排列按钮。

希望对你有用

关于android - 如果所有 subview 都不能水平放置,如何将布局方向更改为垂直,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43764358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com