martes, 8 de octubre de 2013

Como usar ActionBarCompat

Aunque ActionBarSherlock  es una gran librería de desarrollo, nació con fecha de caducidad ya que su creador (Jake Wharton )  la ideó como una librería temporal hasta que Google sacara su librería nativa.
Hace unos meses, el equipo de Android presentó la versión 7 de Android Support Library que incluye ActionBarCompat de forma que las aplicaciones desde la versión 2.1 (API 7) de Android pueden usar ActionBar.

Para usar ActionBar, los pasos a seguir con Eclipse son los siguientes:

En primer lugar comprobamos que el SDK de Android tiene descargada la Android Support Library.

A continuación se importa el código de la librería a Eclipse mediante File -> New -> Android Project from Existing Code. El directorio de origen será el de la propia librería que se encuentra dentro del SDK de Android. Por ejemplo en: /opt/android-sdk-linux/extras/android/compatibility/v7/appcompat/






Estos pasos crean un nuevo proyecto en Eclipse que habrá que añadir posteriormente a las aplicaciones que usen ActionBar como librería de desarrollo. Hay que asegurarse que el proyecto es de tipo “Is Library”. Para ello, encima del proyecto hacemos click con el botón derecho del ratón, seleccionando “Propiedades”.



A continuación creamos una nueva aplicación Android usando la versión de API 18 y se añade el proyecto que hemos importado anteriormente. Para ello, hacemos click con el botón derecho del ratón, seleccionando “Propiedades”. En la nueva ventana, seleccionar “Android” y en el apartado “Library” se añade el proyecto anterior pero sin marcar el checkBox “Is Library”. 



Las aplicaciones que usen ActionBarSupport necesitan dos archivos jar (android-support-v4.jar y android-support-v7-appcompat.jar). Estas dos librerías se deberían añadir automáticamente al completar los pasos anteriores. En caso contrario, se pueden añadir dentro de la carpeta “/libs” del proyecto.

Las nuevas actividades que usen la librería, han de extender la clase ActionBarActivity en lugar de Activity.


public class MainActivity extends ActionBarActivity{
@Override
protected public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstaceState);
setContentView(R.layout.main);
}
}

El tema de la aplicación se establece añadiendo o modificando la linea android:theme del archivo AndroidManifest.xml del proyecto. En este caso se usa el tema Light con Dark ActionBar.

<application
android:label=”@string/app_name”
android:icon=”@drawable/ic_launcher”
android:theme=”@style/Theme.AppCompat.Light.DarkActionBar”>

Las acciones de la barra superior se añaden modificando el archivo /res/menu/main.xml. Se ha de añadir un namespace especial (en este caso, app) y usarse en cada item que se muestre en la ActionBar.


<menu xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto">
   <item
       android:id="@+id/action_settings"
       android:orderInCategory="100"      
       android:title="@string/action_settings"        
       app:showAsAction=""never""  />
   
   <item
       android:id="@+id/action_search"
       android:title="@string/action_search"
       android:icon="@drawable/ic_action_search"
       app:showAsAction="ifRoom" />    
</menu>

A continuación se ha de inflar el menú mediante:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

Para acceder a la ActionBar mediante código, se ha de usar la función getSupportActionBar(). Generalmente las funciones de la ActionBar original han sido sustituidas en esta librería añadiendo “Support” a las funciones originales.

El resultado final es el siguiente:

No hay comentarios:

Publicar un comentario