theme temas tema style studio para for cambiar aplicacion android actionbarsherlock

temas - theme editor android studio



ConfiguraciĆ³n de ActionBarSherlock Theme para la aplicaciĆ³n de Android (7)

LEER ACTUALIZACIÓN 2 A CONTINUACIÓN PARA LA RESPUESTA

Estoy tratando de usar ActionBarSherlock en mi aplicación. Revisé la versión 4.0.0 del proyecto github repo , lo construí en Netbeans, luego copié el archivo library-4.0.0.jar en el directorio lib de mi proyecto (no uso Eclipse).

Es solo una actividad esquelética en este momento, y se ejecuta bien en ICS, pero cuando lo ejecuto en Gingerbread, obtengo la siguiente excepción quejándome de que no tengo el tema de la aplicación para Theme.Sherlock (o similar):

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.arashpayan.prayerbook/com.arashpayan.prayerbook.PrayerBook}: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative. at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) at android.app.ActivityThread.access$1500(ActivityThread.java:117) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3683) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative. at com.actionbarsherlock.internal.ActionBarSherlockCompat.generateLayout(ActionBarSherlockCompat.java:987) at com.actionbarsherlock.internal.ActionBarSherlockCompat.installDecor(ActionBarSherlockCompat.java:899) at com.actionbarsherlock.internal.ActionBarSherlockCompat.setContentView(ActionBarSherlockCompat.java:852) at com.actionbarsherlock.ActionBarSherlock.setContentView(ActionBarSherlock.java:655) at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:316) at com.arashpayan.prayerbook.PrayerBook.onCreate(PrayerBook.java:44) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) ... 11 more

La línea de la que se queja (PrayerBook: 44) es la llamada a setContentView . La aplicación solo consiste en una actividad única con un método onCreate() que llamo setTheme() desde arriba:

public void onCreate(Bundle savedInstanceState) { setTheme(com.actionbarsherlock.R.style.Theme_Sherlock); super.onCreate(savedInstanceState); TextView rootTextView = new TextView(this); rootTextView.setText("Hello, world!"); setContentView(rootTextView); getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); ActionBar.Tab tab = getSupportActionBar().newTab(); tab.setText("Prayers"); getSupportActionBar().addTab(tab); tab = getSupportActionBar().newTab(); tab.setText("Recents"); getSupportActionBar().addTab(tab); tab = getSupportActionBar().newTab(); tab.setText("Bookmarks"); getSupportActionBar().addTab(tab); }

Debo estar configurando el tema incorrectamente, pero no veo cómo. ¿Alguien puede ayudar?

ACTUALIZACIÓN A continuación, CommonsWare observó que el tema se puede configurar en AndroidManifest.xml. Lo he intentado así:

<application android:label="@string/app_name" android:icon="@drawable/icon" android:theme="@style/Theme.Sherlock"> <activity android:name="PrayerBook" android:label="@string/app_name" android:configChanges="orientation|keyboardHidden|screenLayout|uiMode|mcc|mnc|locale|navigation|fontScale|screenSize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="LanguagesActivity" /> </application>

pero Ant me da un error cuando intenta construir la aplicación:

/Users/arash/coding/prayerbook/AndroidManifest.xml:7: error: Error: No resource found that matches the given name (at ''theme'' with value ''@style/Theme.Sherlock'').

ACTUALIZACIÓN 2 Con la ayuda de CommonsWare en sus comentarios de seguimiento, pude hacerlo funcionar. Necesitaba agregar ActionBarSherlock como una dependencia de proyecto. Para hacerlo,

1) library-4.0.0.jar y android-support-4.0.jar del directorio lib de mi proyecto.

2) A continuación, navegue a la carpeta de la library dentro de la raíz del directorio ActionBarSherlock extraído de github. Escriba el android update project para que se build.xml un archivo build.xml y proguard.cfg para la biblioteca.

3) Finalmente, vuelva a ingresar en el directorio principal del proyecto y agregue ABS como una dependencia de biblioteca con el android update project --path . --library ../ActionBarSherlock/library android update project --path . --library ../ActionBarSherlock/library La ruta a --library en el comando variará de acuerdo con el lugar en el que verificó el repositorio. ActionBarSherlock y el directorio de proyectos de mi aplicación eran directorios de hermanos.


Esta no es una respuesta para la pregunta del OP, pero solo describiré cómo logré obtener la misma excepción que él menciona, con la esperanza de que pueda ayudar a alguien más:

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Merlinia.MMessaging_Test/com.Merlinia.MMessaging_Test.TestObjectsActivity}: java.lang.IllegalStateException: You must use Theme.Sherlock, Theme.Sherlock.Light, Theme.Sherlock.Light.DarkActionBar, or a derivative.

En mi caso, la solución fue muy simple, aunque me tomó mucho tiempo encontrarla. Todo lo que lea sobre esta excepción dice "verifique que haya especificado el tema en el archivo manifest.xml", así que eché un vistazo rápido a mi archivo manifest.xml, y ahí estaba. Entonces intenté varias otras cosas.

Finalmente, eché un vistazo más de cerca a mi archivo manifest.xml. ¡Cometí el error de especificar el tema para la actividad principal, no para toda la aplicación!


Esto me estaba sucediendo en IntelliJ IDEA. Resolví este problema yendo a Archivo> Estructura del proyecto> Configuración del proyecto> Facetas> Seleccionar módulo de bloqueo de acción en la segunda columna> Marque la casilla de verificación "Módulo de biblioteca"> Aplicar y Aceptar> Guardar y reconstruir.

ACTUALIZACIÓN Después de una revisión adicional, mi respuesta original puede ser demasiado específica y, probablemente, solo funcionará en ciertos casos. Este error significa que las dependencias no se han configurado correctamente. En IntelliJ IDEA, siga estos pasos para configurar adecuadamente el bloqueo de acción como una dependencia del módulo:

  1. Descargue y extraiga la biblioteca de actionbarsherlock desde el zip (Nota: solo necesita la carpeta “actionbarsherlock”)
  2. Cópialo y pégalo junto a tu proyecto de Android
  3. Abre tu proyecto en IntelliJ
  4. Archivo> Estructura del proyecto> Configuración del proyecto> Módulos> Agregar (verde ''+'' sobre la segunda columna)> Importar módulo> Seleccionar directorio de bloqueo de acciones en el cuadro de diálogo del explorador de archivos> Aceptar> Crear módulo a partir de fuentes existentes> Siguiente
  5. Desmarque la carpeta "prueba" para que no se agregue al proyecto y haga clic en "Siguiente"
  6. En la pestaña Bibliotecas, android-support-v4 debe estar marcado, haga clic en "Siguiente"
  7. Debajo de la pestaña Módulos, se debe marcar el bloqueo de acción y bloqueo, haga clic en "Siguiente"
  8. Si le pide que sobrescriba actionbarsherlock.iml, elija "Sobrescribir" y luego "Finalizar" (debe volver a la sección de Módulos del cuadro de diálogo Estructura del proyecto)
  9. Seleccione el módulo actionbarsherlock en la segunda columna y debajo de la pestaña Dependencias en la tercera columna, marque "Exportar" junto a la biblioteca android-support-v4
  10. ¡Casi allí!
  11. Ahora seleccione el módulo de su proyecto en la segunda columna y, debajo de la pestaña Dependencias, haga clic en el botón Agregar (verde ''+'' en el extremo derecho del cuadro de diálogo)
  12. Seleccione Dependencia del módulo y elija actionbarsherlock en el cuadro de diálogo que aparece y presione "OK"
  13. Ahora haga clic en "Aplicar" o "Aceptar" para aceptar los cambios

Eso debería hacer el truco.


Para mí esto fue causado por no usar el @style/ prefijo @style/ . Es decir, tuve

<style name="AppTheme" parent="Theme.Sherlock.Light" />

en lugar de

<style name="AppTheme" parent="@style/Theme.Sherlock.Light" />

Lo que es un poco raro porque juro que el valor predeterminado de la plantilla es algo como:

<style name="AppTheme" parent="android:Theme.Holo.Light" />


Por lo general, establece su tema en el manifiesto, como se muestra en la documentación del desarrollador de Android (y está vinculado a él desde actionbarsherlock.com/theming.html ).

Si desea utilizar ActionBarSherlock en cualquier lugar dentro de su aplicación, esto funciona:

<application android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/Theme.Sherlock">


Si quieres usar un estilo personalizado, hice una plantilla para el estilo personalizado de ActionBarSherlock . El tema se define en el archivo /values/styles.xml. Se extiende desde el tema Theme.Sherlock.Light. Hay muchos parámetros que puede configurar: icono, logotipo, divisor, título, superposición de sombras, botones de menú de acción, menú emergente, fondo de modo de acción, navegación de lista desplegable, estilo de pestaña, opciones de visualización, etc. Casi todo, lo que necesita, para Crea tu tema de barra de acción personalizada. Utilizo esta plantilla en mis aplicaciones, porque me ayuda a diseñar la barra de acción muy rápidamente.

Puedes encontrar esta plantilla en mi GitHub . Es muy fácil de usar. Solo copie los valores y las directivas dibujables en su proyecto y establezca el parámetro de Android: tema en el elemento de aplicación en AndroidManifest.xml :

<application ... android:theme="@style/Theme.Example">

Dibujar en mi plantilla se generaron a través de Android Action Bar Style Generator . Yo uso diferentes convenciones de nomenclatura para los recursos. Este sencillo script cambia el nombre de todos los recursos generados con Android Action Bar Style Generator a mi propia convención, utilizada en la plantilla.


Tenía el mismo problema. La aplicación se estrelló aunque el tema se estableció en el manifiesto. Establecer el tema resolvió el problema programáticamente:

@Override protected void onCreate(Bundle savedInstanceState) { setTheme(R.style.AppTheme); super.onCreate(savedInstanceState);


<!--Provides resources--> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>library</artifactId> <version>4.1.0</version> <type>apklib</type> </dependency> <!-Provides import links--> <dependency> <groupId>com.actionbarsherlock</groupId> <artifactId>library</artifactId> <version>4.1.0</version> <type>jar</type> <scope>provided</scope> </dependency>

La sugerencia es usar el tipo "apklib", eso significa que Maven utilizará todas las fuentes (los recursos también). Otra dependencia del archivo jar (alcance "proporcionado") se utiliza para lograr un enlace a las clases de sherlock durante la codificación.