with tutorial style studio sesion log inicio example custom con change android facebook android-styles android-facebook

tutorial - log in with facebook android



Estilo FacebookActivity para evitar la barra de progreso terrible (6)

Ahora puede establecer el tema en su AndroidManifest.xml

cometer enlace src

Uso:

AndroidManifest.xml

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> <meta-data android:name="com.facebook.sdk.ApplicationName" android:value="@string/app_name"/> <meta-data android:name="com.facebook.sdk.WebDialogTheme" android:value="@style/Theme.AppCompat.Light.NoActionBar"/>

Esto es válido para facebook-android-sdk v4.8.0 +

Acabo de implementar el inicio de sesión a través de Facebook utilizando su SDK junto con ParseFacebookUtilsV4 .

En mi manifiesto tuve que declarar una actividad de FacebookActivity que se inicia cuando intento iniciar sesión, y eso funciona muy bien.

<activity android:name="com.facebook.FacebookActivity" android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:label="@string/app_name" />

Este fragmento proviene de documentos oficiales, así que no elegí nada. Lo que me pareció realmente extraño es su estilo. En mi emulador (API 22) tiene una barra de progreso que parece venir de los años 90. ¿Hay una manera de estilo? He intentado cambiar el atributo de android:theme , pero sin éxito.

Pensé en extender com.facebook.FacebookActivity , pero después de com.facebook.FacebookActivity código fuente, descubrí que se infla un com.facebook.LoginFragment , que es el responsable de la barra de progreso. ¿Algunas ideas?


Cuando una Actividad crea la Vista para un Diálogo, va al tema de la Actividad y busca el tema especificado por el atributo android:alertDialogTheme . Lo que debe hacer es establecer ese atributo en el tema de diálogo de AppCompat (que para <v21 por defecto es Theme.Holo):

En el tema que apliques a la Actividad de Facebook:

<style name="MyFacebookTheme" parent="@style/Theme.AppCompat.Light.NoActionBar"> ... <item name="android:alertDialogTheme">@style/Theme.AppCompat.Light.Dialog</item> ... </style>


El android:theme que ha configurado para su actividad en su manifiesto se basa en los temas originales que se utilizaron en Android antes de Honeycomb. Es por eso que tu barra de progreso se ve tan vieja. Podrías probar otro tema como:

@android:style/Theme.Material.NoActionBar.TranslucentDecor

Esto se basa en el nuevo Material Design pero, por supuesto, esto solo funciona en dispositivos Lollipop. Busque en la biblioteca de AppCompat más estilos de diseño de materiales que sean compatibles con dispositivos más antiguos.


En primer lugar no es la barra de progreso, es el diálogo de progreso. No sé cómo hacer un diálogo de progreso personalizado con estilo.

Así que aquí hay una solución que cambia el estilo predeterminado (Theme_Translucent_NoTitleBar) con un estilo holo (Theme.Holo.Light). Para eso necesitamos hacer cambios en Facebook SDk.

1) Poner código debajo de style.xml

<style name="NewDialogTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">false</item> <item name="android:background">@android:color/transparent</item> </style>

2) Y lo segundo que necesitamos cambiar aquí en WebDialog.java dentro del paquete com.facebook.widget.

public static final int DEFAULT_THEME = R.style.NewDialogTheme;

Espero que esto te ayude.


Puedes estilizar lo que quieras así:

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="android:windowNoTitle">true</item> <item name="windowActionBar">false</item> <item name="android:textViewStyle">@style/MyStyles.TextView</item> <item name="android:buttonStyle">@style/MyStyles.Button</item> <item name="android:progressBarStyle">@style/MyStyle.ProgressStyle</item> <item name="android:indeterminateProgressStyle">@style/MyStyle.ProgressStyle</item> <item name="android:actionBarStyle">@style/MyStyle.Toolbar</item> </style>

Entonces

<style name="MyStyle.ProgressStyle" parent="android:Widget.Holo.Light.ProgressBar"> <item name="...">...</item> </style>


Sólo un método funciona para mí:

FacebookSdk.setWebDialogTheme(android.R.style.Theme_Holo_Light_NoActionBar);

inmediatamente después de FacebookSdk.sdkInitialize