在ConstraintLayout中,确定我的视图所连接的视图(例如,通过ConstraintSet.TOP)

时间:2017-09-30 13:01:29

标签: android android-constraintlayout

ConstraintLayout中,如果我有两个观看次数,我怎么能以编程方式获得ViewView相关联的View。 ids我知道我的View如何与其他ConstraintSet.TOP相关联(例如,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

要明确:此处涉及四个{{1}}:

  • 我要交换的两个视图。它们可以,但不必以任何方式连接。
  • 我的第一个视图所连接的视图;这是我希望我的第二个视图连接到的那个。
  • 我的第二种观点与之相关的观点;这是我希望我的第一个视图连接到的那个。

想想:在国际象棋棋盘中,我想换掉两个角落。我有他们的ID,我知道他们的每个顶部都与其他视图相关联。

1 个答案:

答案 0 :(得分:1)

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

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

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