gpt4 book ai didi

android - 在 ConstraintLayout 中,确定我的 View 连接到的 View (例如,通过 ConstraintSet.TOP)

转载 作者:行者123 更新时间:2023-11-30 00:19:59 25 4
gpt4 key购买 nike

ConstraintLayout 中,如果我有两个 View 的 ID,我如何以编程方式获取连接到我的 ViewView并且我知道我的 View 如何连接到另一个 View(例如,ConstraintSet.TOP)?我想在我的布局中交换两个(不一定连接!) View 。

void swapViews(ConstraintLayout constraintLayout, int view1ID, int view2ID) {
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(constraintLayout);

// How do I get the "anchor" or "connectedView" of a view with a specific constraint?
// Something like the following:
// int anchor1 = this.findViewById(view1ID).get...(ConstraintSet.TOP);
// int anchor2 = this.findViewById(view2ID).get...(ConstraintSet.TOP);

constraintSet.connect(view2ID, ConstraintSet.TOP, anchor1, ConstraintSet.TOP);
constraintSet.connect(view1ID, ConstraintSet.TOP, anchor2, ConstraintSet.TOP);
constraintSet.applyTo(constraintLayout);
}

需要说明的是:这里涉及到四个View:

  • 我想交换的两种观点。它们可以但不需要以任何方式连接。
  • 我的第一个 View 连接到的 View ;这是我希望我的第二个 View 连接到的那个。
  • 以及我的第二个 View 所连接的 View ;这是我希望我的第一个 View 连接到的那个。

思考:在棋盘上我想交换两个角。我有他们的 ID,我知道他们的每个顶部都连接到其他 View 。

最佳答案

如果您知道连接类型,例如 layout_constraintTop_toTopOflayout_constraintTop_toBottomOf,那么您可以按如下方式使用布局参数:

View v = findViewById(R.id.viewYouAreInterestedIn);
ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) v.getLayoutParams();
int topConnectionId = lp.topToTop;

您可以查看 ConstraintLayout.LayoutParams 的文档获取更多信息。

关于android - 在 ConstraintLayout 中,确定我的 View 连接到的 View (例如,通过 ConstraintSet.TOP),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46502960/

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