Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
Curso Android
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
SQL
ANDROID STUDIO
DATOS
DATOS
FUNDAMENTOS
WEB SERVICES
ANDROID STUDIO
Contacto
UI
CONEXIN DE RED
UI
CONEXIN DE RED
RECURSOS
FUNDAMENTOS
WEB SERVICES
RECURSOS
Inicio DesarrolloAndroid UI
ToolbarEnAndroid:CreacinDeActionBarEnMaterial
Design
Toolbar En Android:
Creacin De Action
Bar En Material Design
JamesRevelo
Comments
junio19,2015
UI
Qu buscas?
Search
Lo Ms Popular
73
Aplicacin Android
Con Navigation
Drawer Y Tabs
1/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Cmo Sincronizar
Sqlite Con Mysql En
Android?
NavigationView:
Navigation Drawer
Con Material Design
TabLayout: Cmo
Aadir Pestaas En
Android?
Servicio Web RESTful
Para Android Con
Php, Mysql y Json
Toolbar En Android:
Creacin De Action
Bar En Material
Design
Consumir Un Servicio
Web REST Desde
Android
Como Crear
Dilogos En Android?
Tutorial De Parsing
Xml En Android Con
XmlPullParser
Usar Transiciones En
Android Con Material
Design
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
2/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Template
recomendada
Toolbar En Android: Action Bar En Materia...
DescargarCdigo
Apyanosconunasealenturedsocialfavoritay
consigueelcdigocompleto.
Share
590
Share
529
Tweet
debes
deshabilitarla
con
el
estilo
Theme.AppCompat.NoActionBar aadiendolosatributos
windowActionBar y windowNoTitle con los siguientes
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
3/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
valores:
<stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar"
<!HabilitarlaToolbar>
<itemname="windowActionBar">false</item>
<itemname="windowNoTitle">true</item>
<!...>
</style>
una
etiqueta
comosehaceconloswidgetsnormales.
Estaconvencinotorgatodoelpoderdelaactionbaral
desarrollar Android, ya que el mtodo antiguo solo
permita la personalizacin a travs de los temas y
estilos.
<!Toolbar>
<android.support.v7.widget.Toolbarxmlns:app=
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
4/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Algunospuntosaconsiderar:
LosactionbuttonsdelaToolbarseinflanatravsde
unarchivodemencomosiemprehashecho.
Los eventos se controlan igualmente con el mtodo
onOptionsItemSelected() .
para
ponerla
en
funcionamiento.
CoordinatorLayout:
InteraccionesEntreViews
Crear
5/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
6/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<android.support.design.widget.CoordinatorLayout
...>
<!ObjetoConScroll>
<android.support.v7.widget.RecyclerView
...
app:layout_behavior="@string/appbar_scrolling_view_behavior"
<!AppBar>
<android.support.design.widget.AppBarLayout
...>
<!Toolbar>
<android.support.v7.widget.Toolbar
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
7/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
...
app:layout_scrollFlags="scroll|enterAlways"
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
Paraellodebestenerencuentalosiguiente:
desplazarelcontenido.
enterAlways :vuelve visible al view ante cualquier
signodescrolling.
enterAlwaysCollapsed :vuelvevisibleelviewsolosi
susdimensionessuperenlaalturamnima.
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
8/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
CollapsingToolbarLayout: Espacio
FlexibleDeLaAppBar
LaAppBaresunelementoflexiblecapazdeaumentaro
reducir su tamao para desplegar mejor experiencia de
usuariodependiendodelasinteraccionesqueseejerzan
sobreella.
Para implementar esta caracterstica se usa el
CollapsingToolbarLayout . Un layout especial que
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
9/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<?xmlversion="1.0"encoding="utf8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/resauto"
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!ObjetoconScroll>
<android.support.v4.widget.NestedScrollView
...
app:layout_behavior="@string/appbar_scrolling_view_behavior"
<!Contenidodesplazable>
</android.support.v4.widget.NestedScrollView>
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
10/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<!AppBar>
<android.support.design.widget.AppBarLayout
...>
<!Collapser>
<android.support.design.widget.CollapsingToolbarLayout
...
app:contentScrim="?attr/colorPrimary"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
<!Toolbar>
<android.support.v7.widget.Toolbar
...
app:layout_collapseMode="pin"
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
</android.support.design.widget.CoordinatorLayout>
El
CollapsingToolbarLayout
debe
envolver
directamentealaToolbar.
La Toolbar puede sobrevivir a la contraccin del
contenido
travs
app:layout_scrollMode="pin" .
del
Los
atributo
dems
elementosdesaparecern.
PuedesanimareltitulodelaToolbaraadindoloal
CollapsingToolbarLayout con setTitle() .
AlreducirunviewpuedesusarunefectoParallax(es
necesario
aplicar
el
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
11/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
SiquieresahorrartiempoimplementandoelMaterial
DesignentusappAndroid,terecomiendolaplantilla
MaterialDesignAppdeCodecanyon
dependencies{
...
compile'com.android.support:appcompatv7:22.2.0'
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
12/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
compile'com.android.support:design:22.2.0'
compile'com.android.support:recyclerviewv7:22.2.0'
compile'com.android.support:cardviewv7:22.2.0'
compile'com.github.bumptech.glide:glide:3.6.0'
compile'de.hdodenhof:circleimageview:1.3.0'
}
<resources>
<stringname="app_name">CitasPeligrosas</string>
<stringname="action_settings">Settings</string>
<stringname="action_add">Aadir</string>
<stringname="action_favorite">MarcarFavorito
<stringname="title_activity_detail">DetailActivity
<stringname="girl_ipsum">
Morbiposuereloremnecelitdapibus,vitaeaccumsanmaurispellentesq
Vestibulumalobortismi.Vestibulumlaciniamolestiesemper.Pellente
ultricesarculacus,interdummollisnibhconvallisut.Aliquamsagitt
semalacusgravida,euaccumsanpurusvolutpat.Donectempus,estid
tristiqueconsectetur,lacusliguladignissimturpis,cursuscommodot
liberoinpurus.Phasellustempusgravidatempor.
</string>
<stringname="action_search">Buscar</string>
</resources>
13/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
colors.xml
<?xmlversion="1.0"encoding="utf8"?>
<resources>
<colorname="darkPrimaryColor">#D32F2F</color>
<colorname="primaryColor">#F44336</color>
<colorname="accentColor">#448AFF</color>
</resources>
<resources>
<dimenname="headerbar_elevation">4dp</dimen>
<dimenname="card_margin">16dp</dimen>
<dimenname="size_fab">56dp</dimen>
<dimenname="fab_margin">16dp</dimen>
<dimenname="avatar_size">40dp</dimen>
</resources>
Paso#7:AhoracrearemoselPOJOdelosobjetosdela
lista. Aade una nueva clase llamada Girl.java con el
cdigo de abajo. Este es el modelo de datos para los
elementosdel RecyclerView .
Girl.java
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
14/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
importjava.util.Random;
/**
*POJOdelaschicas
*/
publicclassGirl{
privateStringname;
privateintidDrawable;
publicGirl(Stringname,intidDrawable)
this.name=name;
this.idDrawable=idDrawable;
}
publicGirl(Stringname){
this.name=name;
this.idDrawable=getRandomGirlDrawable
}
publicStringgetName(){
returnname;
}
publicintgetIdDrawable(){
returnidDrawable;
}
/**
*Asignaundrawableenformaaleatoria
*
*@returniddeldrawable
*/
privateintgetRandomGirlDrawable(){
Randomrnd=newRandom();
switch(rnd.nextInt(8)){
default:
case0:
returnR.drawable.girl1;
case1:
returnR.drawable.girl2;
case2:
returnR.drawable.girl3;
case3:
returnR.drawable.girl4;
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
15/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
case4:
returnR.drawable.girl5;
case5:
returnR.drawable.girl6;
case6:
returnR.drawable.girl7;
case7:
returnR.drawable.girl8;
}
}
}
importjava.util.ArrayList;
importjava.util.List;
importjava.util.Random;
/**
*Envolturaparagenerarunalistadeejemplo
*/
publicclassGirls{
publicstaticfinalString[]girlsNamesDummy
"Catherine","Evelyn","Phyllis",
"Denise","Virginia","Ruth","Barbara"
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
16/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
"Catherine","Melissa","Sandra",
"Diane","Betty","Sharon","Ruby"
"Linda","Marie","Deborah","Sara"
"Donna","Catherine","Louise","Catherine"
"Janice","Cheryl","Lisa","Andrea"
"Cynthia","Angela","Donna","Deborah"
};
/**
*Generaunalistadeobjetos{@linkGirl}conuntamaodeterminado
*
*@paramcountTamao
*@returnListaaleatoria
*/
publicstaticList<Girl>randomList(intcount
Randomrandom=newRandom();
List<Girl>items=newArrayList<>();
//Restriccindetamao
count=Math.min(count,girlsNamesDummy
1.1k while(items.size()<count){
Apoyos items.add(newGirl(girlsNamesDummy
}
590
161
returnnewArrayList<>(items);
}
}
17/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
FAB.
layout_anchorGravity : La ubicacin del elemento.
<?xmlversion="1.0"encoding="utf8"?>
<android.support.design.widget.CoordinatorLayout
xmlns:app="http://schemas.android.com/apk/resauto"
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<!ObjetoconScroll>
<android.support.v4.widget.NestedScrollView
android:id="@+id/scroll"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/app_bar"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingTop="24dp">
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
18/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<!CardPerfil>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/card_margin"
<LinearLayout
style="@style/Widget.CardContent
android:layout_width="match_parent"
android:layout_height="wrap_content"
<!EtiquetaPerfil>
<TextView
android:layout_width=
android:layout_height
android:text="Perfil"
android:textAppearance
<!Textodeejemplo>
<TextView
android:layout_width=
android:layout_height
android:text="@string/girl_ipsum"
</LinearLayout>
</android.support.v7.widget.CardView>
<!CardAmigos>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/card_margin"
android:layout_marginLeft="@dimen/card_margin"
android:layout_marginRight="@dimen/card_margin"
<LinearLayout
style="@style/Widget.CardContent
android:layout_width="match_parent"
android:layout_height="wrap_content"
<!EtiquetaAmigos>
<TextView
android:layout_width=
android:layout_height
android:text="Amigos(450)"
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
19/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
android:textAppearance
<!Textodeejemplo>
<TextView
android:layout_width=
android:layout_height
android:text="@string/girl_ipsum"
</LinearLayout>
</android.support.v7.widget.CardView>
<!CardIntereses>
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/card_margin"
android:layout_marginLeft="@dimen/card_margin"
android:layout_marginRight="@dimen/card_margin"
<LinearLayout
style="@style/Widget.CardContent
android:layout_width="match_parent"
android:layout_height="wrap_content"
<!EtiquetaIntereses>
<TextView
android:layout_width=
android:layout_height
android:text="Intereses"
android:textAppearance
<!Textodeejemplo>
<TextView
android:layout_width=
android:layout_height
android:text="@string/girl_ipsum"
</LinearLayout>
</android.support.v7.widget.CardView>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
20/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<!AppBar>
<android.support.design.widget.AppBarLayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="256dp"
android:fitsSystemWindows="true"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
<!Collapser>
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapser"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
<!Imagendeldetalle>
<ImageView
android:id="@+id/image_paralax"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:scaleType="centerCrop"
app:layout_collapseMode="parallax"
<!Toolbar>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@android:color/transparent"
app:layout_collapseMode="pin"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/CustomActionBar"
/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
21/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<!FAB>
<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android:layout_width="@dimen/size_fab"
android:layout_height="@dimen/size_fab"
android:layout_margin="@dimen/fab_margin"
android:src="@mipmap/ic_chat"
app:borderWidth="0dp"
app:elevation="@dimen/fab_elevation"
app:layout_anchor="@id/app_bar"
app:layout_anchorGravity="bottom|right|end"
</android.support.design.widget.CoordinatorLayout>
Paso#11:DescargalossiguientesiconosparalaToolbar
de la actividad de detalle.Al extraer el contenido, pega
lascarpetasenres.
Paso #12: Ahora debes actualizar el men de tu
actividaddedetalle.Veares/menu/detail.xmlypegael
cdigodeabajo.Solotendremostresactionbuttonspara
aadir,agregarafavoritosylosajustes:
detail.xml
<menuxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/resauto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.herprogramacion.toolbarapp.DetailActivity"
<item
android:id="@+id/action_settings"
android:orderInCategory="100"
android:title="@string/action_settings"
app:showAsAction="never"/>
<item
android:id="@+id/action_add"
android:icon="@mipmap/ic_person_add"
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
22/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
android:orderInCategory="1"
android:title="@string/action_add"
app:showAsAction="ifRoom"/>
<item
android:id="@+id/action_favorite"
android:icon="@mipmap/ic_favorite"
android:orderInCategory="2"
android:title="@string/action_favorite"
app:showAsAction="ifRoom"/>
</menu>
delalibreradediseollamadoSnackBarconlacadena
especificada. Este componente es muy parecido a los
Toasts, solo que permiten aadir una accin en su
contenido.
DetailActivity.java
importandroid.app.Activity;
importandroid.content.Context;
importandroid.content.Intent;
importandroid.os.Bundle;
importandroid.support.design.widget.CollapsingToolbarLayout
importandroid.support.design.widget.FloatingActionButton
importandroid.support.design.widget.Snackbar
importandroid.support.v7.app.AppCompatActivity
importandroid.support.v7.widget.Toolbar;
importandroid.view.Menu;
importandroid.view.MenuItem;
importandroid.view.View;
importandroid.widget.ImageView;
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
23/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
importcom.bumptech.glide.Glide;
publicclassDetailActivityextendsAppCompatActivity
privatestaticfinalStringEXTRA_NAME=
privatestaticfinalStringEXTRA_DRAWABLE
/**
*Iniciaunanuevainstanciadelaactividad
*
*@paramactivityContextodesdedondeselanzar
*@paramtitleItemaprocesar
*/
publicstaticvoidcreateInstance(Activity
Intentintent=getLaunchIntent(activity
activity.startActivity(intent);
}
/**
*ConstruyeunIntentapartirdelcontextoylaactividad
*dedetalle.
*
*@paramcontextContextodondeseinicia
*@paramgirlIdentificadordelachica
*@returnIntentlistoparausar
*/
publicstaticIntentgetLaunchIntent(Context
Intentintent=newIntent(context,DetailActivity
intent.putExtra(EXTRA_NAME,girl.getName
intent.putExtra(EXTRA_DRAWABLE,girl.
returnintent;
}
@Override
protectedvoidonCreate(BundlesavedInstanceState
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail
setToolbar();//Aadiractionbar
if(getSupportActionBar()!=null)//Habilitarupbutton
getSupportActionBar().setDisplayHomeAsUpEnabled
Intenti=getIntent();
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
24/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Stringname=i.getStringExtra(EXTRA_NAME
intidDrawable=i.getIntExtra(EXTRA_DRAWABLE
CollapsingToolbarLayoutcollapser=
(CollapsingToolbarLayout)findViewById
collapser.setTitle(name);//Cambiarttulo
loadImageParallax(idDrawable);//CargarImagen
//SetearescuchaalFAB
FloatingActionButtonfab=(FloatingActionButton
fab.setOnClickListener(
newView.OnClickListener(){
@Override
publicvoidonClick(Viewv
showSnackBar("OpcindeChatear"
}
}
);
}
privatevoidsetToolbar(){
//AadirlaToolbar
Toolbartoolbar=(Toolbar)findViewById
setSupportActionBar(toolbar);
}
/**
*Secargaunaimagenaleatoriaparaeldetalle
*/
privatevoidloadImageParallax(intid){
ImageViewimage=(ImageView)findViewById
//UsandoGlideparalacargaasncrona
Glide.with(this)
.load(id)
.centerCrop()
.into(image);
}
/**
*Proyectauna{@linkSnackbar}conelstringusado
*
*@parammsgMensaje
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
25/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
*/
privatevoidshowSnackBar(Stringmsg){
Snackbar
.make(findViewById(R.id.coordinator
.show();
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu
getMenuInflater().inflate(R.menu.detail
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItem
intid=item.getItemId();
switch(id){
caseR.id.action_settings:
showSnackBar("Seabrenlosajustes"
returntrue;
caseR.id.action_add:
showSnackBar("Aadiracontactos"
returntrue;
caseR.id.action_favorite:
showSnackBar("Aadirafavoritos"
returntrue;
default:
returnsuper.onOptionsItemSelected
}
}
}
26/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<?xmlversion="1.0"encoding="utf8"?>
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:paddingBottom="8dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="8dp">
<!Imagecirculardelalibreraexterna>
<de.hdodenhof.circleimageview.CircleImageView
android:id="@+id/avatar"
android:layout_width="@dimen/avatar_size"
android:layout_height="@dimen/avatar_size"
android:layout_marginRight="16dp"/>
<!Nombredelachica>
<TextViewxmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/list_item_textview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textAppearance="?attr/textAppearanceListItem"
</LinearLayout>
Paso
#15:
Crea
una
nueva
clase
llamada
SimpleAdapter.java.
Esta
clase
es
un
RecyclerView.Adapter personalizado que inflar el
nombreyavatardecadachicadesdelist_item.xml.
SimpleAdapter.java
importandroid.app.Activity;
importandroid.content.Context;
importandroid.support.v7.widget.RecyclerView
importandroid.view.LayoutInflater;
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
27/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
importandroid.view.View;
importandroid.view.ViewGroup;
importandroid.widget.ImageView;
importandroid.widget.TextView;
importcom.bumptech.glide.Glide;
importjava.util.List;
publicclassSimpleAdapterextendsRecyclerView
implementsItemClickListener{
privatefinalContextcontext;
privateList<Girl>items;
publicstaticclassSimpleViewHolderextends
implementsView.OnClickListener{
//Camposrespectivosdeunitem
publicTextViewnombre;
publicImageViewavatar;
publicItemClickListenerlistener;
publicSimpleViewHolder(Viewv,ItemClickListener
super(v);
nombre=(TextView)v.findViewById
avatar=(ImageView)v.findViewById
this.listener=listener;
v.setOnClickListener(this);
}
@Override
publicvoidonClick(Viewv){
listener.onItemClick(v,getAdapterPosition
}
}
publicSimpleAdapter(Contextcontext,List
this.context=context;
this.items=items;
}
@Override
publicintgetItemCount(){
returnitems.size();
}
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
28/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
@Override
publicSimpleViewHolderonCreateViewHolder
Viewv=LayoutInflater.from(viewGroup
.inflate(R.layout.list_item,viewGroup
returnnewSimpleViewHolder(v,this);
}
@Override
publicvoidonBindViewHolder(SimpleViewHolder
GirlcurrentItem=items.get(i);
viewHolder.nombre.setText(currentItem
Glide.with(viewHolder.avatar.getContext
.load(currentItem.getIdDrawable
.centerCrop()
.into(viewHolder.avatar);
}
/**
*Sobrescrituradelmtododelainterfaz{@linkItemClickListener}
*
*@paramviewitemactual
*@parampositionposicindelitemactual
*/
@Override
publicvoidonItemClick(Viewview,intposition
DetailActivity.createInstance(
(Activity)context,items.get
}
interfaceItemClickListener{
voidonItemClick(Viewview,intposition);
}
29/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<?xmlversion="1.0"encoding="utf8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/resauto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
android:id="@+id/coordinator"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!ObjetoConScroll>
<android.support.v7.widget.RecyclerView
android:id="@+id/reciclador"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="@+id/coordinator"
android:padding="3dp"
android:scrollbars="vertical"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
<!AppBar>
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
<!Toolbar>
<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"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
</android.support.design.widget.AppBarLayout>
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
30/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
</android.support.design.widget.CoordinatorLayout>
</RelativeLayout>
Creaeladaptadorysetealoenel RecyclerView .
MainActivity.java
importandroid.os.Bundle;
importandroid.support.design.widget.CollapsingToolbarLayout
importandroid.support.design.widget.Snackbar
importandroid.support.v7.app.AppCompatActivity
importandroid.support.v7.widget.LinearLayoutManager
importandroid.support.v7.widget.RecyclerView
importandroid.support.v7.widget.Toolbar;
importandroid.view.Menu;
importandroid.view.MenuItem;
publicclassMainActivityextendsAppCompatActivity
privateRecyclerViewrecycler;
privateLinearLayoutManagerlManager;
privateCollapsingToolbarLayoutcollapser
@Override
protectedvoidonCreate(BundlesavedInstanceState
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
31/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
setToolbar();//AadirlaToolbar
SimpleAdapteradaptador=newSimpleAdapter
//ObtenerelRecycler
recycler=(RecyclerView)findViewById
recycler.setHasFixedSize(true);
//UsarunadministradorparaLinearLayout
lManager=newLinearLayoutManager(this
recycler.setLayoutManager(lManager);
//Crearunnuevoadaptador
recycler.setAdapter(adaptador);
}
privatevoidsetToolbar(){
Toolbartoolbar=(Toolbar)findViewById
setSupportActionBar(toolbar);
}
@Override
publicbooleanonCreateOptionsMenu(Menumenu
getMenuInflater().inflate(R.menu.main
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItem
intid=item.getItemId();
switch(id){
caseR.id.action_search:de
showSnackBar("Comenzarabuscar..."
returntrue;
caseR.id.action_settings:
showSnackBar("Seabrenlosajustes"
returntrue;
}
returnsuper.onOptionsItemSelected(item
}
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
32/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
/**
*Proyectauna{@linkSnackbar}conelstringusado
*
*@parammsgMensaje
*/
privatevoidshowSnackBar(Stringmsg){
Snackbar
.make(findViewById(R.id.coordinator
.show();
}
}
Paso#18:EjecutalaaplicacinenAndroidStudio:
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
33/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Conclusin
PudisteimplementarlaToolbarenAndroid?
Bien,enestetutorialhasvistolospasosnecesariospara
crearunainterfazsimpleperovisualmenteatractiva.
La librera de soporte de diseo de Google es el gran
avance que necesitbamos para comenzar con el
MaterialDesigndeformarobusta.Noobstanteantiene
variosbugs,porloquepodemosesperarquemejorecon
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
34/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
eltiempo.
Recuerda actualizar el SDK de Android para estar al
tanto de las mejoras y obtener el funcionamiento
completodelaslibrerasdesoporte.
Ahora el paso a seguir es comprender como crear un
NavigationDrawerenAndroid con el nuevo widget para
MaterialDesign.
Quieresaprenderadisearbasesde
datosdesde0?
Artculos Relacionados
Tutorialde
Botonesen
Android
TabLayout:
CmoAadir
PestaasEn
Android?
Controles:
TutorialDe
BotonesEn
Android
CmoCrear
UnaActividadDe
PreferenciasEn
Android?
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
35/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Comentarios
Comunidad
Recomendar 2
Compartir
Iniciarsesin
ordenarporelmejor
netealadiscusin...
MarioEnriqueGonzalezHernand hace2meses
Hola!,acabodeconocertublog...YLOAMO!
graciasporestecontenido!:)
1
Responder Compartir
Moder. >Mario
EnriqueGonzalezHernand hace2meses
JamesReveloUrrea
:DGraciasMario!,paratiqueeresnuevo,
publico4tutorialesalmes,asqueten
pacienciaporsivesalgodedemoras.
Saludos!
Responder Compartir
FranciscoBriceo>James
ReveloUrrea hace2meses
Hola,miratengounaduda,como
puedolograruntoolbarounnavbar
peroqueseaenbutton,gracias!
Responder Compartir
VipPunkJoshersDroopy hace4das
exelentegracias.
Responder Compartir
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
36/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
icaiza hace21das
Porquesucedeesto...Medejaunpequeopedazo
deltextoeiconoquetengo..Micodigoesel
siguiente..Algunaidea
<android.support.design.widget.coordinatorlayout
android:fitssystemwindows="true"...="">
<android.support.v4.widget.nestedscrollview
app:layout_behavior="@string/appbar_scrolling_view_behavior">
/*CODIGO*/
</android.support.v4.widget.nestedscrollview>
<android.support.design.widget.appbarlayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
android:id="@+id/view">
<android.support.v7.widget.toolbar
verms
Responder Compartir
icaiza>icaiza hace20das
Merespondo..Elproblemaesquetena
aplicadounthemecon
<item
name="android:statusBarColor">@android:color/transparent</item>
ElstatusBareratransparenteymotivoporel
cualsevepartedeltoolbar..Sloquiteeste
itemdelthemeyListo
Responder Compartir
KEVINJAVIERVEGAMERINO hace2meses
Hola,excelentepagina,tengounproblemaalintegrar
varioselementosydondedebodemeterunswipeto
refreshparaquenochoqueconelscrolldetodala
vista,entoncescomopuedoacomodarloytambien
untablayoutconviewpager,elxmles:
<android.support.design.widget.coordinatorlayout
<android.support.v4.widget.nestedscrollview=""
<linearlayout="">
<android.support.v7.widget.cardview>
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
37/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
<android.support.v7.widget.cardview>
<linearlayout>
<textview>
</linearlayout>
</android.support.v7.widget.cardview>
</linearlayout>
</android.support.v4.widget.nestedscrollview>
<android.support.design.widget.appbarlayout>
<android.support.design.widget.collapsingtoolbarlayout>
verms
Responder Compartir
hackcrack hace5meses
Tengounaconsulta,aversicontusuper
conocimientosalienigenasjejepuedesayudarme.
Sucedequeestoymetiendoleunmapaal
AppBarLayout,ysehaceextramadamentelento
moverteporelmapa,principalmentecuandointentas
moverteverticalmente.Porquenonosacarlodeahiy
ponerloenunRelativeLayouttepreguntaras,peroes
quenecesitoqueesteahiyaquequieroelefectode
cuandohacesscrollhaciaabajoseoculteconelfade
delatransicionnativadeAndroid.
Pasoelcodigo:
<android.support.design.widget.appbarlayout
android:id="@+id/app_bar"
android:layout_width="match_parent"
android:layout_height="300dp"
android:theme="@style/Theme.App"
verms
Responder Compartir
hackcrack>hackcrack hace5meses
Solucionadoconuntouchevent:)
1
Responder Compartir
Developer hace7meses
BuenostardesJames
Estoyteniendoproblemaaltratardevereldetallede
laimagen,enlapartequemeestadandoelproblema
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
38/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
laimagen,enlapartequemeestadandoelproblema
"java.lang.ClassCastException:
android.app.Applicationcannotbecastto
android.app.Activity"es
DetailActivity.createInstance((Activity)context,
items.get(position))
noentiendoporquemeestapasandoeso.gracias
Responder Compartir
Developer>Developer hace7meses
BuenosdiasJames,Yaloresolvileagregela
siguientelinea
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
enelmetodocreateInstance.
ejemplo
publicstaticvoidcreateInstance(Context
activity,Itemtitle){
Intentintent=getLaunchIntent(activity,title)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
//Agregeestalinea
activity.startActivity(intent)
}
Responder Compartir
JulioAlvarado hace7meses
HolagraciasporelTuto,unaduda:alcorrerel
proyectosemecierraenelcelular,yelerrorqme
saleesenelMainActiviyenelmtodode
setToolbar(),mepodranayudar?
Responder Compartir
HolaJulioquetipodeerrorsale?
Responder Compartir
JulioAlvarado>JamesRevelo
Urrea hace7meses
Holagraciasporcontestar,mesaleq
noescompatiblelatoolbar,perono
entiendoqnoescompatibleconque
Responder Compartir
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
39/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
JamesReveloUrrea
Moder. >JulioAlvarado
hace7meses
Qutalsirevisaselimportde
latoolbarqueestsusando.Si
usasAppCompatActivity
entoncesusaelpaquete
android.support.v7.widget.Toolbar
Responder
Compartir
JulioAlvarado>James
ReveloUrrea
hace7meses
Sale,voyachecar,gracias
amigo
Responder
Compartir
Enmanuel hace8meses
Buenosdias,comopuedohacerloinversomostarel
toolbaralvereldetalleyalmomentodehacerel
scrollupmantenerlaimagenyeliconoactivoy
ocultareltoolbar.
gracias
Responder Compartir
JamesReveloUrrea
hace8meses
Moder. >Enmanuel
HolaEnmanuel.Supongoquesoloquitasel
collapsinglayoutyluegousaslasbanderas
descrollqueseveenlaactividaddelista
Responder Compartir
Eliot.Net hace8meses
Quetalbuenastardes.
Preguntasepuedeincluirunfragmentoquemuestre
elmapadentrodeunGLIDEasicomoserealizacon
laimagen.Queenvezqueseaunaimagenmuestre
enunmapalaubicacinenmicasodeunclientea
visitar.
Responder Compartir
JamesReveloUrrea
hace8meses
Moder. >Eliot.Net
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
40/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Cuandohablasdemapaterefieresauna
imagenolaAPIdegooglemaps?
Responder Compartir
CarlosCarEd>JamesRevelo
Urrea hace8meses
Holatengounproblemaalcompilarme
sale:
Error:(31,28)Noresourcefoundthat
matchesthegivenname(at'style'with
value'@style/Widget.CardContent').
Responder Compartir
JamesReveloUrrea
Moder. >CarlosCarEd
hace8meses
Holacarlos.Descargael
proyectoyrevisaelarchivo
styles.Allseencuentraese
estiloqueteestndiciendoque
falta.
Responder
Compartir
Eliot.Net>JamesReveloUrrea
hace8meses
Efectivamente.Googlemaps,loque
meinteresaesdecirlealvendedor
cuandoentreaunclienteavisitale
pongalamarcadedondeestaubicado
dichocliente.
Peroquesemuestreasicomolo
hacesconlaimagendelapersona
queseselecciona,envezdefotodela
persona,laubicacindelamisma.
Notengomuchaexperienciaen
Android,estostutorialesmehan
ayudadobastanteadarmeunaidea
comoquierovisualizarlaaplicacin.
Responder Compartir
JamesReveloUrrea
Moder. >Eliot.Net
hace8meses
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
41/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
hace8meses
Creoqueesposible
compaero.Esperohacerun
tutorialsobregooglemapspara
versipodemosincluiralgo
parecido.
Responder
Compartir
Eliot.Net>JamesRevelo
Urrea hace8meses
Zasgracias.mientrassigo
investigando
Responder
Compartir
JamesReveloUrrea
Moder. >Eliot.Net
hace8meses
Dalecompaero
Responder
Compartir
Enmanuel hace8meses
Saludo,estoyteniendounincovenientealtratarde
corregerlaaplicacionmepresentaelsiguiente
android.view.InflateException:BinaryXMLfileline#2:
Errorinflatingclass
android.support.design.widget.CoordinatorLayout,
Porquesera?
Responder Compartir
JamesReveloUrrea
hace8meses
Moder. >Enmanuel
Hola,tienesincluidalalibreriadediseode
soporteenelbuild.gradle?
Responder Compartir
Enmanuel>JamesReveloUrrea
hace8meses
gracias,yamefunciono
Responder Compartir
RogelioTrejo hace9meses
Cuandoinstalolaaplicacinenmiemulador,corre
perfectamente,muestratodocomodebera,peroen
elmennomuestraeliconodelaaplicacin,peroen
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
42/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
elmennomuestraeliconodelaaplicacin,peroen
lasappssiaparececomoinstalada.
Yenmicelularsoloseinstalaperonoseejecutay
delicononihablar.
Algunasolucinalrespecto?
Responder Compartir
JamesReveloUrrea
Trejo hace9meses
Moder. >Rogelio
Tearrojaalgnerror?
Responder Compartir
Rogelio>JamesReveloUrrea
hace9meses
Mefaltabanunaslineasenelmanifest,
peroyaquedtodosolucionado:D
muchasgracias
Responder Compartir
JamesReveloUrrea
Moder. >Rogelio
hace9meses
:Deseeselproblemacon
algunosdemistutoriales,que
doyporhechoqueyatodos
sabencomohacerlo.Tengo
pendientemodificarestetuto
paraaadirleesepaso.
Saludos!
Responder
Compartir
Bluedp hace10meses
Estimados,primeroquetodoestoymuyfelizdehaber
descubiertoesteblogporqueestabuensimo!
segundo(Argentina),comodatoalmargenprobla
appenmiphone(4.4.2)perotuvoproblemasconlos
iconosdelToobarquenosevisualizaban,lo
solucioneactualizandolalibreradesoportea
"compile'com.android.support:design:22.2.1'".aunas
noquedabiendeltodo,agregarestaokperoel
coraznapareceelsetting,esperogooglesolucione
alabrevedadesto,porlomenosmuestraavancesen
cadaversin.Saludos!
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
43/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
Responder Compartir
Luis hace10meses
Holaexcelentearticulo:)meencantosindudaalguna
muybuenosaportesgraciasporesosaportes,bien
tengounapequeadudaesperopuedanayudarme
yotratedehacerelesteejemploperocounvalor
estticoperonoseporquenomefuncionaelbotn
deregresarmepodrasayudarporfavoradecirme
dondeestoymalmicdigolotengoas
publicclassQuinesextendsAppCompatActivity{
@Override
protectedvoidonCreate(BundlesavedInstanceState)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_detail)
setToolbar()//Aadiractionbar
if(getSupportActionBar()!=null)//Habilitarupbutton
getSupportActionBar().setDisplayHomeAsUpEnabled(true)
verms
Responder Compartir
JamesReveloUrrea
hace10meses
Moder. >Luis
Holaamigo.
Puesintentcambiandoamedidaabsoluta
comotienes,peroigualmefuncion.Tanto
desdeelupbuttoncomodelbackbutton.
DentrodelmtodoonOptionsItemSelected
estsusandolaopcinandroid.R.id.home?
Siesas,talvezesoestinterfiriendo.
Responder Compartir
lucas hace10meses
cuandovoyhastaabajodetodoenellistado,yluego
subodesapareceeltoolbar,cuandoentroenuna
fichayregresoallistadoaparecenuevamente,que
puedeser?
Responder Compartir
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
44/45
26/5/2016
ToolbarEnAndroid:CreacinDeActionBarEnMaterialDesign
JamesRevelo>lucas hace10meses
Holalucas.
Estosedebeaquetalvezcambiastelas
banderasdescrolldelatoolbar.Probaste
dejarpresionadoelscrollhaciaabajoparaque
apareciera?
Responder Compartir
RafaelValencia>JamesRevelo
hace9meses
Hola,unestupendotutorialsinduda
alguna.Tambintengoelmismo
problema,hedescargadoelcdigo,
ejecutadolaaplicacinytodofunciona
peroocasionalmentesepresentael
problema(hacerscrollhastaabajo,
luegosubiryenlugardeltoolbar
solamentehayunespacioenblanco.)
Responder Compartir
http://www.hermosaprogramacion.com/2015/06/toolbarenandroidcreaciondeactionbarenmaterialdesign/
45/45