studio layout_collapsemode layout_behavior example coordinatorlayout constraintlayout collapsing appbar_scrolling_view_behavior app and android androiddesignsupport android-coordinatorlayout android-collapsingtoolbarlayout

android - layout_collapsemode - coordinatorlayout example



CollapsingToolbarLayout no se colapsa cuando EditText se enfoca (3)

Creo que después de todas las investigaciones esta es la mejor solución.

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(final View v, boolean hasFocus) { if (hasFocus) { mAppBarLayout.setExpanded(false, true); // second one for animation } } });

Estoy usando CollapsingToolBar dentro de CoordinatorLayout y tengo NestScrollView contiene algunos EditText como vistas secundarias. A lo que me enfrento es cuando el texto de edición se enfoca y el teclado aparece cuando mi vista completa no se desplaza hacia arriba.

A continuación se muestra el código y la imagen como salida de ese diseño.

<android.support.design.widget.AppBarLayout android:id="@+id/appbar" android:layout_width="match_parent" android:layout_height="@dimen/app_bar_height" android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> <android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:contentScrim="?attr/colorPrimary" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <ImageView android:id="@+id/ivProductImage" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop" android:src="@drawable/stub_image" app:layout_collapseParallaxMultiplier="0.7" app:layout_collapseMode="parallax" /> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" app:layout_collapseMode="pin" app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> </android.support.design.widget.CollapsingToolbarLayout> </android.support.design.widget.AppBarLayout> <android.support.v4.widget.NestedScrollView android:id="@+id/nested_scroll_view" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <LinearLayout android:id="@+id/containerLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" app:layout_behavior="@string/appbar_scrolling_view_behavior"> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp"> <EditText android:id="@+id/etProductTitle" style="@style/EditTextStyle" android:hint="@string/lbl_product_title" android:inputType="text" android:textSize="24dp" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp"> <EditText android:id="@+id/etProductDescription" style="@style/EditTextStyle" android:hint="@string/lbl_description" android:inputType="text" /> </android.support.design.widget.TextInputLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <android.support.design.widget.TextInputLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_weight="0.5"> <EditText android:id="@+id/etDeposit" style="@style/EditTextStyle" android:hint="@string/lbl_deposit" android:inputType="number" /> </android.support.design.widget.TextInputLayout> <android.support.design.widget.TextInputLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_weight="0.5"> <EditText android:id="@+id/etPricePerDay" style="@style/EditTextStyle" android:hint="@string/lbl_price_per_day" android:inputType="number" /> </android.support.design.widget.TextInputLayout> </LinearLayout> <android.support.design.widget.TextInputLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp"> <EditText android:id="@+id/etLocation" style="@style/EditTextStyle" android:hint="@string/lbl_add_location" android:inputType="text" /> </android.support.design.widget.TextInputLayout> <TextView style="@style/SubHeading" android:layout_margin="10dp" android:text="@string/lbl_categories" android:textColor="@color/color_primary" /> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="315dp" android:layout_marginLeft="10dp" android:isScrollContainer="false" android:layout_marginRight="10dp" android:scrollbars="none" /> </LinearLayout> </android.support.v4.widget.NestedScrollView>


OnFocusChangeListener esto al agregar OnFocusChangeListener a EditText y si tiene el foco, simplemente contraiga la vista con el método setExpanded :

editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(final View v, boolean hasFocus) { if (hasFocus) { mAppBarLayout.setExpanded(false, true); } } });

Si desea que su CollapsingToolbarLayout se contraiga cada vez que se EditText su otro EditText de su diseño, debe establecer el mismo OnFocusChangeListener en cada uno de ellos.


RecyclerView es un widget desplazable, lo que significa que estos widgets desplazables no funcionarán entre sí. (Sin embargo, RecyclerView es un elemento secundario de NestedScrollingChild )

Marque esta pregunta para más explicación:

¿Cómo usar RecyclerView dentro de NestedScrollView?

Pero, puedes usarlo con LinearLayoutManager personalizado

https://.com/a/32736113/4409113

Por cierto,

Podría usar ese RecyclerView dentro del CoordinatorLayout y fuera del NestedScrollView .

Espero que ayude.