studio personalizar example custom coordinatorlayout bar appbarlayout android android-layout android-toolbar android-coordinatorlayout

personalizar - toolbar android example



Arreglar la barra inferior en CoordinatorLayout (7)

Este comportamiento básicamente elimina SCROLL bandera de desplazamiento de AppBarLayout , cuando el contenido de desplazamiento en vista dependiente ( RecyclerView , NestedScrollView ) es menor que la altura de la vista, es decir. cuando no es necesario desplazarse. También anula la vista de desplazamiento de desplazamiento, que normalmente es realizada por AppBarLayout.ScrollingViewBehavior . Funciona bien al agregar pie de página, es decir. , a la vista de desplazamiento o en ViewPager , donde la longitud del contenido puede ser diferente en cada página

https://gist.github.com/MaciejKaras/02bff315f00b87d80467a470424f22c3

Respondió ya en https://stackoverflow.com/a/37293634

Tengo un CoordinatorLayout que contiene AppBarLayout y un FrameLayout que contiene fragmentos.

Uno de este fragmento contiene un TabLayout en la parte superior, una lista a través de RecyclerView y en la parte inferior una barra de herramientas "casera".

AppBarLayout está configurado con la app:layout_scrollFlags="scroll|enterAlways"

Mi problema es que ambas "barras de herramientas" se ocultan cuando se desplazan, el AppBarLayout y mi barra de herramientas "casera" en la parte inferior. Este es el comportamiento actual

Me gustaría arreglar la barra de herramientas "casera" inferior para mantenerla visible pero no puedo lograrlo.

Este es el XML del fragmento Diseño

<?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" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.design.widget.TabLayout android:id="@+id/toolbarfilter" android:layout_width="match_parent" android:background="@color/azul_asde" app:tabMode="fixed" app:tabMaxWidth="0dp" android:elevation="4dp" app:tabIndicatorColor="@color/verde_pastel" android:layout_height="wrap_content" /> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipeContainer" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <android.support.v7.widget.RecyclerView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout> <LinearLayout android:id="@+id/toolbarselection" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingTop="10dp" android:paddingBottom="10dp" android:background="@color/azul_asde" android:elevation="4dp" android:visibility="visible" > <ImageView android:id="@+id/delete" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_delete_white_24dp" android:tint="@color/gris_desactivado" /> <ImageView android:id="@+id/select" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_bookmark_border_white_24dp"/> <ImageView android:id="@+id/send" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:src="@drawable/ic_send_white_24dp" android:tint="@color/gris_desactivado" /> </LinearLayout> </LinearLayout>

EDITAR1: THIS PREGUNTA parece ser el mismo problema.


Me enfrenté al mismo problema. Esta es la forma en que funcionó para mí

Elimine AppBarLayout layout_behavior para que se arregle en la parte superior. Defina FrameLayout layout_behavior como app:layout_behavior="@string/appbar_scrolling_view_behavior" para que ajuste FrameLayout debajo de AppBarLayout . De esta forma, el contenido del diseño del marco se desplazará pero no la barra de herramientas. CoordinatorLayout Diseño de diseño de la siguiente manera

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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="match_parent" android:fitsSystemWindows="true" tools:context="com.next_tech.teebox.GridView"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:titleTextColor="@android:color/white" /> </android.support.design.widget.AppBarLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> </FrameLayout> </android.support.design.widget.CoordinatorLayout>

Este es el XML del diseño de su fragmento donde su desplazamiento de recyclerView sin afectar su TabLayout y diseño lineal inferior.

<?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" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.design.widget.TabLayout android:id="@+id/toolbarfilter" android:layout_width="match_parent" android:background="@color/colorPrimary" app:tabMode="fixed" app:tabMaxWidth="0dp" android:elevation="4dp" app:tabIndicatorColor="@color/btnBackground" android:layout_height="?android:actionBarSize" /> <android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/swipeContainer" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <android.support.v7.widget.RecyclerView android:id="@+id/list" android:layout_width="match_parent" android:layout_height="match_parent"/> </android.support.v4.widget.SwipeRefreshLayout> <LinearLayout android:id="@+id/toolbarselection" android:layout_width="match_parent" android:layout_height="?android:actionBarSize" android:orientation="horizontal" android:background="@color/colorPrimary" android:layout_gravity="bottom" android:elevation="4dp" android:visibility="visible" > <ImageView android:id="@+id/delete" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center" app:srcCompat="@android:drawable/ic_menu_delete" /> <ImageView android:id="@+id/select" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_weight="1" app:srcCompat="@drawable/white_arrow" /> <ImageView android:id="@+id/send" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:layout_gravity="center" app:srcCompat="@drawable/ic_send_holo_dark" /> </LinearLayout> </LinearLayout>

Espero que ayude a alguien gracias

para más información - Comportamiento de desplazamiento para las barras de aplicaciones en Android


No puede hacer esto en coordinatorlayout. así que usa RelativeLayout y dentro de su diseño tu propio diseño


Para arreglar la barra inferior, primero debes usar una actividad donde estén presentes las pestañas. En esa actividad usa diferentes fragmentos. Agregue su tabLayout en esta activity_main_tab.xml

activity_main_tab.xml

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:local="http://schemas.android.com/apk/res-auto" android:id="@+id/co_activity_root_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true"> <android.support.design.widget.AppBarLayout local:theme="@style/Theme.AppBarOverlay" android:id="@+id/toolbar_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true"> </android.support.design.widget.AppBarLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/toolbar_layout"> <FrameLayout android:id="@+id/fl_fragment_container" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> </RelativeLayout> </android.support.design.widget.CoordinatorLayout>

Para uso de vista fragmentaria

fragment_tab.xml

aquí use la aplicación: layout_scrollFlags = "scroll | enterAlways" en la barra de herramientas para que sea desplazable

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/coordinator" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:theme="@style/ThemeOverlay.AppCompat.Dark"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:id="@+id/tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/white" app:tabIndicatorHeight="@dimen/profile_tablayout_indicator_height" android:background="?attr/colorPrimary" app:tabGravity="fill"/> </android.support.design.widget.AppBarLayout> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"/> </android.support.design.widget.CoordinatorLayout>

FragmentTabs.java

public class FragmentTabs extends BaseFragment{ private View rootView; private ViewPager viewPager; private TabLayout tabLayout; private Toolbar toolbar; private ViewPagerAdapter viewPagerAdapter; @Override public View onCreateView(LayoutInflater inflater, ViewGroup viewGroupContainer, Bundle savedInstanceState) { rootViewSearch = inflater.inflate(R.layout.fragment_tab, viewGroupContainer, false); initializeLayout(); setUpActionBar(); setUpFragmentObjects(); return rootView; } private void initializeLayout() { toolbar = (Toolbar) rootView.findViewById(R.id.toolbar); viewPager = (ViewPager) rootView.findViewById(R.id.viewpager); tabLayout = (TabLayout) rootView.findViewById(R.id.tablayout); } private void setUpActionBar() { getApplicationContext().setSupportActionBar(toolbarSearch); ActionBar actionBar = getApplicationContext().getSupportActionBar(); if(actionBar != null){ actionBar.setTitle(Constants.BLANK); } } private void setUpFragmentObjects() { viewPagerAdapter = new ViewPagerAdapter(getApplicationContext(), getChildFragmentManager()); viewPager.setAdapter(searchViewPagerAdapter); tabLayout.setupWithViewPager(viewPager); } }

ViewPagerAdapter.java

public class ViewPagerAdapter extends FragmentPagerAdapter { public ViewPagerAdapter(Activity activity, FragmentManager fragmentManager) { super(fragmentManager); } @Override public Fragment getItem(int position) { Bundle bundle; switch (position) { case 0: // For Tab 1 // use fragment for tab 1 return fragment1; case 1: // For Tab 2 // use fragment for tab 2 return fragment2; case 2: // For Tab 3 // use fragment for tab 3 return fragment3; default: return null; } } @Override public int getCount() { return 3; // no. of Tabs } @Override public CharSequence getPageTitle(int position) { switch (position) { case 0: // Title For Tab1 return "Tab1"; case 1: // Title For Tab2 return "Tab2"; case 2: // Title For Tab3 return "Tab3"; default: return null; } } }


Prueba este diseño:

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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="match_parent" android:id="@+id/container"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/bottom_navigation" android:layout_alignParentTop="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view" android:layout_width="match_parent" android:layout_margin="10dp" android:layout_height="110dp" android:padding="15dp" card_view:cardElevation="2dp" card_view:cardCornerRadius="4dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Test" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view1" android:layout_width="match_parent" android:layout_margin="10dp" android:layout_height="110dp" android:padding="15dp" card_view:cardElevation="2dp" card_view:cardCornerRadius="4dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Test" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view3" android:layout_width="match_parent" android:layout_margin="10dp" android:layout_height="110dp" android:padding="15dp" card_view:cardElevation="2dp" card_view:cardCornerRadius="4dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Test" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view4" android:layout_width="match_parent" android:layout_margin="10dp" android:layout_height="110dp" android:padding="15dp" card_view:cardElevation="2dp" card_view:cardCornerRadius="4dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Test" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView xmlns:card_view="http://schemas.android.com/apk/res-auto" android:id="@+id/card_view5" android:layout_width="match_parent" android:layout_margin="10dp" android:layout_height="110dp" android:padding="15dp" card_view:cardElevation="2dp" card_view:cardCornerRadius="4dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:text="Test" /> </android.support.v7.widget.CardView> </LinearLayout> </ScrollView> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="bottom" android:gravity="bottom"> <android.support.design.widget.BottomNavigationView android:layout_width="match_parent" android:layout_height="56dp" android:layout_weight="1" android:foregroundGravity="bottom" android:background="@color/green" app:itemIconTint="@color/white" app:itemTextColor="@color/white" android:id="@+id/bottomnav" app:menu="@menu/main"> </android.support.design.widget.BottomNavigationView> </RelativeLayout> </android.support.design.widget.CoordinatorLayout>


Puede intentar agregar collapseMode en su barra de herramientas de esta manera.

Tu appBarLayout parece estar bien

Te aconsejaría que mires este enlace: https://github.com/codepath/android_guides/wiki/Handling-Scrolls-with-CoordinatorLayout `

<android.support.design.widget.CollapsingToolbarLayout android:id="@+id/collapsing_toolbar" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_blue_light" android:fitsSystemWindows="true" app:expandedTitleMarginEnd="64dp" app:expandedTitleMarginStart="48dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" app:layout_collapseMode="pin" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:layout_scrollFlags="scroll|enterAlways"/> <android.support.design.widget.TabLayout android:id="@+id/tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/white" app:tabIndicatorHeight="@dimen/profile_tablayout_indicator_height" android:background="?attr/colorPrimary" app:tabGravity="fill"/> </android.support.design.widget.CollapsingToolbarLayout>


prueba esto

<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout 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:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent"> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/bottom_navigation" android:layout_alignParentTop="true"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/red" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/colorPrimary" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/red" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/colorPrimary" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/red" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/colorPrimary" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/red" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/colorPrimary" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/red" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/colorPrimary" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/red" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> <android.support.v7.widget.CardView android:layout_width="match_parent" android:layout_height="50dp" android:padding="15dp" app:cardBackgroundColor="@color/colorPrimary" app:cardCornerRadius="4dp" app:cardElevation="2dp"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Nilesh Rathod" android:textColor="#ffFFff" /> </android.support.v7.widget.CardView> </LinearLayout> </ScrollView> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="bottom" android:gravity="bottom"> <android.support.design.widget.BottomNavigationView android:id="@+id/bottomnav" android:layout_width="match_parent" android:layout_height="56dp" android:layout_weight="1" android:background="@color/green" android:foregroundGravity="bottom" app:itemIconTint="@color/lightWhite" app:itemTextColor="@color/lightWhite" app:menu="@menu/menu"/> </RelativeLayout> </android.support.design.widget.CoordinatorLayout>

Resultado