Constraint Layout measures incorrect height if nested in scrollview

<android.support.v4.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:fillViewport="true"> <android.support.constraint.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content"> ///Content </android.support.constraint.ConstraintLayout> </android.support.v4.widget.NestedScrollView> 

In this case, the restriction pattern is long. I also have a problem with marginEnd child views. I have many childhood performances, similar to

  <TextView android:id="@+id/tvDurationPlan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/margin_medium" android:textSize="@dimen/txt_size_small" style="@style/WhiteTextViewStyle" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintLeft_toLeftOf="@+id/tvPlanLabel" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvPlanLabel" app:layout_constraintVertical_bias="0.0" android:layout_marginEnd="16dp" tools:text="TextView" /> 

and layout_marginEnd does not work. Please help me!

+5
source share
3 answers

To solve the marginEnd problem, we must use android: layout_width = "0dp" for child views

0
source

To solve this problem, I get the location of the last view and set this value to the height of the constraint layout

 private void adjustConstraintLayoutToView(View view) { final ViewTreeObserver vto = view.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { if (mConstraintLayout.getMeasuredHeight() > 0) { int[] location = new int[2]; view.getLocationOnScreen(location); mConstraintLayout.getLayoutParams().height = location[1]; mConstraintLayout.requestLayout(); if (vto.isAlive()) { vto.removeOnGlobalLayoutListener(this); } else { view.getViewTreeObserver().removeOnGlobalLayoutListener(this); } } } }); } 
0
source

how could I say this bug was fixed in com.android.support.constraint: constraint-layout: 1.1.0-beta3

0
source

Source: https://habr.com/ru/post/1266935/


All Articles