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.

¿Alguien se enfrentó a este problema?

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.

  • Notificación de empuje no mostrada al usuario para la función APPINVITE en Facebook SDK para Android
  • Cómo funciona el cierre de sesión en Facebook SDK Android
  • Android y Facebook SDK: descodificación de imágenes de / me / picture graph call
  • Visión general de plataformas de terceros o bibliotecas para Android
  • ¿Cómo manejar los errores de la API en la aplicación de Android usando Facebook 3.0 SDK?
  • Android SDK de Facebook v3.0 SSO LoginButton devolver un nulo GraphUser
  • Cómo obtener la foto de Facebook, el nombre completo, el género usando Facebook SDK android
  • Gestión de sesiones de Facebook en la aplicación de Android a través de múltiples actividades con Facebook SDK 3
  • Uso del diálogo compartido en Android Facebook SDK. ¿Cómo saber si el usuario comparte o cancela la actividad compartida?
  • La devolución de llamada de inicio de sesión no se activa mediante facebook-android-sdk 4
  • Clave no válida de Android y Facebook Connect
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.