Scroll View работает после открытия его фрагмента во второй раз - PullRequest
0 голосов
/ 03 апреля 2020

У меня есть фрагмент прокрутки в моем фрагменте, который работает, только если я открываю фрагмент один раз, затем закрываю его и затем снова открываю. Сначала он вообще не прокручивается, а после описанных шагов работает отлично. Я уже пытался обернуть constraintLayout в tableLayout, LinearLayout, а также использовал scrollView в качестве макета верхнего уровня. Я не могу найти ничего об этом в Google. Пожалуйста, помогите

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 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"
    tools:context=".LightPack.LightSettings"
    android:layout_height="match_parent"
    android:layout_width="match_parent">

<ScrollView
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">


    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="24dp"
            android:fontFamily="@font/montserrat"
            android:text="Keet at:"
            android:textColor="#FFFFFF"
            android:textSize="30sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/circular_range_slider" />

        <RadioGroup
            android:id="@+id/radioGroup"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:checkedButton="@id/radioButton"
            android:gravity="center_horizontal"

            android:orientation="horizontal"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView2">


            <RadioButton
                android:id="@+id/radioButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="On/Off"
                android:textColor="#FFFFFF" />

            <RadioButton
                android:id="@+id/radioButton2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Time Schedule"
                android:textColor="#FFFFFF" />

            <RadioButton
                android:id="@+id/radioButton3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Keep around"
                android:textColor="#FFFFFF" />
        </RadioGroup>

        <Switch
            android:id="@+id/switch1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="32dp"
            android:layout_marginRight="32dp"
            android:text="ON"
            android:textColor="#FFFFFF"
            android:textSize="22sp"
            app:layout_constraintEnd_toEndOf="@+id/radioGroup"
            app:layout_constraintTop_toTopOf="@+id/textView" />

        <TextView
            android:id="@+id/textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="32dp"
            android:layout_marginLeft="32dp"
            android:layout_marginTop="16dp"
            android:text="Air Condition"
            android:textColor="#FFFFFF"
            android:textSize="22sp"
            app:layout_constraintStart_toStartOf="@+id/radioGroup"
            app:layout_constraintTop_toBottomOf="@+id/radioGroup" />

        <com.bikcrum.circularrangeslider.CircularRangeSlider
            android:id="@+id/circular_range_slider"
            android:layout_width="200dp"

            android:layout_height="200dp"
            android:layout_marginTop="50dp"
            app:borderColor="#838383"
            app:borderWidth="5dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.497"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView"
            app:max="24">

        </com.bikcrum.circularrangeslider.CircularRangeSlider>

        <com.bikcrum.circularrangeslider.CircularRangeSlider
            android:id="@+id/circular_range_slider2"
            android:layout_width="200dp"

            android:layout_height="200dp"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="32dp"
            app:borderColor="#838383"
            app:borderWidth="5dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.497"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/textView4"
            app:max="24">

        </com.bikcrum.circularrangeslider.CircularRangeSlider>

        <TextView
            android:id="@+id/textView2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginLeft="16dp"
            android:layout_marginTop="8dp"
            android:fontFamily="@font/montserrat"
            android:text="Temperature:"
            android:textColor="#FFFFFF"
            android:textSize="30sp"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/tempDisplay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:fontFamily="@font/montserrat"
            android:text="24 C"
            android:textColor="#FFFFFF"
            android:textSize="30sp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <EditText
            android:id="@+id/editText"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginLeft="8dp"
            android:layout_marginEnd="16dp"
            android:layout_marginRight="16dp"
            android:ems="10"
            android:fontFamily="@font/montserrat"
            android:hint="Temp"
            android:inputType="number"
            android:textColor="#FFFFFF"
            app:layout_constraintBottom_toBottomOf="@+id/textView4"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/textView4"
            app:layout_constraintTop_toTopOf="@+id/textView4" />
    </androidx.constraintlayout.widget.ConstraintLayout>

1 Ответ

0 голосов
/ 03 апреля 2020

Хорошо, так что я нашел ответ. Я использовал фрагмент в окне просмотра, но он был пользовательским.

public class CustomViewPager extends ViewPager {


public CustomViewPager(@NonNull Context context) {
    super(context);
}

public CustomViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    int height = 0;
    for(int i = 0; i < getChildCount(); i++) {
        View child = getChildAt(i);
        child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
        int h = child.getMeasuredHeight();
        if(h > height) height = h;
    }

    if (height != 0) {
        heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
    }

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}

После возврата к нормальному, все снова заработало.

...