Android 以编程方式设置ViewPager和#x27;s项目';s小部件和包含ViewPager的布局小部件是不可能的
我有一个Android 以编程方式设置ViewPager和#x27;s项目';s小部件和包含ViewPager的布局小部件是不可能的,android,android-layout,android-viewpager,android-widget,android-constraintlayout,Android,Android Layout,Android Viewpager,Android Widget,Android Constraintlayout,我有一个ConstraintLayout包含一个ViewPager和另一个小部件,我们可以称之为“a”。我想在一个ViewPager的小部件(我们可以称为“B”)和“a”之间添加一个约束。当然,B实际上是一个包含在片段中的小部件(因为ViewPagers使用片段)。请注意,此片段的布局也是一个ConstraintLayout 事实上,如果我正确理解了我所阅读和尝试的内容,我就无法使用XML来实现这一点 因此,我尝试使用以下代码以编程方式实现: ConstraintSet constraintSe
ConstraintLayout
包含一个ViewPager
和另一个小部件,我们可以称之为“a”。我想在一个ViewPager
的小部件(我们可以称为“B”)和“a”之间添加一个约束。当然,B实际上是一个包含在片段中的小部件(因为ViewPagers
使用片段)。请注意,此片段的布局也是一个ConstraintLayout
事实上,如果我正确理解了我所阅读和尝试的内容,我就无法使用XML来实现这一点
因此,我尝试使用以下代码以编程方式实现:
ConstraintSet constraintSet = new ConstraintSet();
ConstraintLayout constraintLayout = inflated.findViewById(R.id.fragment_home_constraint_layout);
constraintSet.connect(R.id.B, ConstraintSet.TOP, R.id.A, ConstraintSet.BOTTOM,0);
constraintSet.applyTo(constraintLayout);
是包含R.id.fragment\u home\u constraint\u layout
和A的约束布局ViewPager
- 因此,我试图告诉“请将B约束为A,B是
的项(nota:item=fragment)小部件,A是布局的小部件,它也包含ViewPager
”ViewPager
为什么以及如何做到这一点?约束具有不同父视图的两个视图是不可能的 所以我试着告诉“请约束B,这是ViewPager的 item(nota:item=fragment)小部件,到A,它是 布局,其中还包含“ViewPager” 上述要求并不容易。您仍然可以在片段中使用一些回调。因此,每当片段中的小部件找到它的位置时,活动视图也应该相应地移动 下面的例子应该是一个很好的开始 通过单击Viewpager片段中的按钮,活动布局中的小部件将更改其位置
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
button = view.findViewById(R.id.buttonmove);
viewPager = getActivity().findViewById(R.id.vpPager);
activityButton = getActivity().findViewById(R.id.activity_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ConstraintLayout constraintLayout = (ConstraintLayout) getActivity().findViewById(R.id.fragment_home_constraint_layout);
ConstraintSet set = new ConstraintSet();
set.constrainWidth(R.id.activity_button, ConstraintSet.WRAP_CONTENT);
set.constrainHeight(R.id.activity_button, ConstraintSet.WRAP_CONTENT);
set.centerHorizontally(R.id.activity_button, R.id.fragment_home_constraint_layout);
set.connect(R.id.activity_button, ConstraintSet.TOP, R.id.vpPager, ConstraintSet.BOTTOM, 200);
set.applyTo(constraintLayout);
}
});
}