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