Facebook LoginButton para Android no toma los valores de login_text y logout_text pasados de XML
Facebook Sdk para Android no toma los valores login_text y logout_text pasados de XML. Simplemente lo ignora. No hay documentación / ejemplo disponible en la tierra que utilice esta personalización del botón.
<com.facebook.widget.LoginButton xmlns:fb="http://schemas.android.com/apk/res-auto" android:id="@+id/connectWithFbButton" style="@style/com_facebook_loginview_default_style" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center_horizontal" android:text="@string/connect_with_facebook" fb:login_text="@string/connect_with_facebook" fb:logout_text="Connecting with facebook" />
Siempre dice Login In o Log Out. ¿Cómo puedo usar esta propiedad? He intentado depurar a través del código de LoginButton pero en vano. Nunca pasa por ninguno de los constructores de LoginButton () y por lo tanto no puede analizar mis parámetros personalizados.
- Acceda al correo electrónico del usuario utilizando el nuevo SDK de Android de Facebook
- Establecer permiso para obtener el ID de correo electrónico del usuario desde Facebook
- No se puede publicar una imagen de drawable a facebook
- Solicitando un permiso de Facebook rechazado de nuevo sin aparecer el diálogo de Facebook dos veces
- Buscando ejemplos de SDK en Android de Facebook
¿Alguien se enfrentó a este problema?
- Aplicación para Android de Facebook: expiración de token de acceso (expires_in) siempre es 0
- Session.getActiveSession () devuelve null al iniciar la aplicación, aunque estoy conectado
- Uso del API de logro de Facebook en Android
- El hash de clave de Facebook no coincide con ningún hash de clave almacenado
- Obtener permisos de lectura y publicación en una solicitud
- El inicio de sesión de Android facebook no funciona con la aplicación de Facebook instalada
- ¿Podemos cambiar la imagen del enlace (que está publicado por la aplicación android) en facebook
- ToByteArray () no se resolverá para el inicio de sesión de facebook
Gabriel es perfecto. Para corregir esto, vaya a LoginButton.java en Facebook SDK y mueva la llamada parseAttributes
parseAttributes(attrs)
A la parte inferior para que siempre se ejecuta.
Todo el método se verá así:
public LoginButton(Context context, AttributeSet attrs) { super(context, attrs); if (attrs.getStyleAttribute() == 0) { // apparently there's no method of setting a default style in xml, // so in case the users do not explicitly specify a style, we need // to use sensible defaults. this.setTextColor(getResources().getColor(R.color.com_facebook_loginview_text_color)); this.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.com_facebook_loginview_text_size)); this.setPadding(getResources().getDimensionPixelSize(R.dimen.com_facebook_loginview_padding_left), getResources().getDimensionPixelSize(R.dimen.com_facebook_loginview_padding_top), getResources().getDimensionPixelSize(R.dimen.com_facebook_loginview_padding_right), getResources().getDimensionPixelSize(R.dimen.com_facebook_loginview_padding_bottom)); this.setWidth(getResources().getDimensionPixelSize(R.dimen.com_facebook_loginview_width)); this.setHeight(getResources().getDimensionPixelSize(R.dimen.com_facebook_loginview_height)); this.setGravity(Gravity.CENTER); if(isInEditMode()) { // cannot use a drawable in edit mode, so setting the background color instead // of a background resource. this.setBackgroundColor(getResources().getColor(R.color.com_facebook_blue)); // hardcoding in edit mode as getResources().getString() doesn't seem to work in IntelliJ loginText = "Log in"; } else { this.setBackgroundResource(R.drawable.com_facebook_loginbutton_blue); initializeActiveSessionWithCachedToken(context); } } parseAttributes(attrs); }
Tanto estilo como login_text se toman en consideración ahora. Funciona bien para mí.
Resuelto !!
Agregue una cadena con el nombre "com_facebook_loginview_log_in_button" a strings.xml que se encuentra en res> values> strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="com_facebook_loginview_log_in_button">Connect</string> <string name="com_facebook_loginview_log_out_button">Your Logout</string> </resources>
Su primera solución es correcta. No funcionó porque usted ha definido el estilo atrribute:
style="@style/com_facebook_loginview_default_style"
Desde el código fuente de LoginButton:
public LoginButton(Context context, AttributeSet attrs) { super(context, attrs); if (attrs.getStyleAttribute() == 0) { do stuff ... } }
Por lo tanto, sólo buscará el atributo definido "login_text" si deja el atributo "style" sin definir.
Terminé simplemente teniendo que cambiar el texto en la fuente de FacebookSDK.
La cadena de inicio de sesión es com_facebook_loginview_log_in_button
ubicada en FacebookSDK/res/values/strings.xml
Como atajo, puede cambiar el texto del botón de inicio de sesión directamente en FB SDK 4.0 en el método com.facebook.login.widget.LoginButton-> setButtonText ()
He probado muchas de estas soluciones, pero nada funciona, por fin llegué a un final con:
Locale loc = Locale.FRENCH; loginButton = (LoginButton)findViewById(R.id.fb_login_button); loginButton.setTextLocale(loc);
Esto cambia el texto a la configuración regional que establece y también los cuadros de diálogo de confirmación, al menos lo que necesito.
Espero que esto ayude.
- Android: captura la pantalla del teléfono como una película
- Emulador de Android no empieza en absoluto