skydoves / ExpandableLayout

🦚 An expandable layout that shows a two-level layout with an indicator.
Apache License 2.0
825 stars 54 forks source link

setVisibility not working #28

Open IgnacioBasallote opened 3 years ago

IgnacioBasallote commented 3 years ago

Please complete the following information:

Describe the Bug:

The layout does not work as expected when programmatically changing its visibility. When you set the layout GONE and after an event visible again , the sizing format is completely lost.

Find here the xmls:

Main layout:

<LinearLayout
            android:id="@+id/lnlytExpandableTypeDevice"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="5dp">

            <com.skydoves.expandablelayout.ExpandableLayout
                android:id="@+id/expandableTypeDevice"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                app:expandable_duration="300"
                app:expandable_isExpanded="true"
                app:expandable_parentLayout="@layout/content_expandable_add_component_device_header"
                app:expandable_secondLayout="@layout/content_expandable_add_component_device_input"
                app:expandable_showSpinner="true"
                app:expandable_spinner="@drawable/ic_arrow_down"
                app:expandable_spinner_color="@color/StemyEnergy.Color.UI.Text.Green"
                app:expandable_spinner_animate="true"
                app:expandable_spinner_margin="14dp"
                app:expandable_spinner_gravity="end"
                app:expandable_spinner_size="40dp" />
        </LinearLayout>

parentLayout:

<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ctlyDeviceType"
    android:layout_width="match_parent"
    android:layout_height="40dp"
    android:background="@drawable/rounded_corners_button"
    android:backgroundTint="@color/StemyEnergy.Color.UI.Text.Background.Green"
    android:paddingStart="15dp"
    android:paddingEnd="15dp"
    android:layout_marginBottom="10dp">

    <TextView
        android:id="@+id/deviceType"
        android:textSize="@dimen/medium_text_size_app"
        android:textAppearance="@android:style/TextAppearance.DeviceDefault.Large"
        android:textColor="@color/StemyEnergy.Color.UI.Text.Green"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|start"
        android:text="@string/StemyEnergy.ThirdPartyDeviceSetUp.SelectDevicePromptLbl" />

</RelativeLayout>

secondLayout:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:id="@+id/lnlyExpDeviceType">
    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/devRecyclerView"
        android:layout_width="match_parent"
        android:layout_height="140dp"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        android:orientation="horizontal">
    </androidx.recyclerview.widget.RecyclerView>
</LinearLayout >

Find attached some screenshots:

  1. The second expandable layout was first set gone. After a click event it was set visible. The content of the second layout is missing (when it should not be gone) and the header format lost.

imagen

  1. Expandable layout working properly when not changing visibility:

imagen

Expected Behavior:

Visibility working as expected.

Thanks in advance!

Cheers, Nacho

P.S. I have wrapped the expandable layouts within a LinearLayout, because is the only way of making them invisible without losing the format. However, if you set the LinearLayout visibility to GONE, the format is lost anyway.