Android google signin y facebook inicio de sesión botón de mirar completamente diferente

El objeto predeterminado de Facebook LoginButton y el objeto de botón de inicio de sesión de Google tienen apariencias completamente diferentes y no encajan en mi diseño existente. A mi entender, estos objetos no son activos que puedo modificar sin cambiar la propia biblioteca (donde supongo que estos componentes también son de código abierto)

¿Cómo lidiar con esto? He visto aplicaciones que tienen opciones de inicio de sesión para aquellos que usan sus propios botones personalizados, pero en mi implementación estoy usando los objetos dados que llaman automáticamente a sus respectivas bibliotecas al hacer clic.

Por supuesto, puedo bucear más profundo, pero siento que estoy reinventando la rueda no tan obvio si lo hice

<com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" /> 

Este objeto no es tan obviamente un botón, y todavía no he inspeccionado para ver si realmente es un botón.

Necesito usar diferentes recursos para el botón de inicio de sesión de Google+ y de Facebook.

Lo que tengo

Un ejemplo de Android que me gusta (Duolingo app)

Editar: después de algunos ajustes de diseño muy simple, este es el resultado (en modo horizontal, sólo para iluminar el problema)

Estos botones son todavía muy diferentes y necesito un activo diferente que todavía tendrá acceso a los métodos correctos. Yo tipo de obtener la forma de hacerlo con Facebook, gracias a los ejemplos, pero el inicio de sesión de Google es bastante críptico para mí ahora

Para cambiar el texto en el botón de Facebook:

 fb:login_text="Put your login text here" fb:logout_text="Put your logout text here" 

También tendrá que añadir esto al botón:

 xmlns:fb="http://schemas.android.com/apk/res-auto" 

al igual que:

 <com.facebook.widget.LoginButton xmlns:fb="http://schemas.android.com/apk/res-auto" android:id="@+id/login_button" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="30dp" android:layout_marginBottom="0dp" fb:login_text="Sign in with Facebook" /> 

Pruebe esto: Añada este método a su actividad:

 protected void setGooglePlusButtonText(SignInButton signInButton, String buttonText) { for (int i = 0; i < signInButton.getChildCount(); i++) { View v = signInButton.getChildAt(i); if (v instanceof TextView) { TextView tv = (TextView) v; tv.setTextSize(15); tv.setTypeface(null, Typeface.NORMAL); tv.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS); tv.setText(buttonText); return; } } } 

Añada la siguiente línea en onCreateMethod (donde tiene init los id's):

 setGooglePlusButtonText(btnSignIn, getString(R.string.common_signin_button_text_long)); 

Los botones no están diseñados exactamente de la misma manera – curva diferente en las esquinas y el uso de sombras. Así que no es posible hacer que se vean exactamente iguales. Lo más cercano que pude conseguir fue hacer un diseño lineal vertical con un ancho exacto de 215dip – y establecer el ancho de los botones para ser match_parent:

Introduzca aquí la descripción de la imagen

Esto utilizó el siguiente layout.xml:

 <LinearLayout android:layout_width="215dip" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:orientation="vertical" > <com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="match_parent" android:layout_height="wrap_content" /> <com.facebook.widget.LoginButton android:id="@+id/authButton" android:layout_width="match_parent" android:layout_height="wrap_content" /> </LinearLayout> 

Con el botón de Google+, simplemente puede utilizar su propio recurso: com.google.android.gms.common.SignInButton comporta igual que android.widget.Button y registra un controlador onClick de la forma normal. Sólo asegúrese de seguir las directrices de Google para la creación de marcas cuando crea su activo:

https://developers.google.com/+/branding-guidelines

Sin embargo, tenga en cuenta que el botón de Google+ proporciona traducciones que necesitará crear usted mismo si implementa su propio botón en varios idiomas.

Con la última sdk, ambos botones son similares. El código y los resultados se mencionan a continuación.

Paso 1: build.gradle

Compilar 'com.facebook.android:facebook-android-sdk:4.6.0'

Compilar 'com.google.android.gms: play-services: 7.5.0'

Paso 2: myActivity.xml

 <com.google.android.gms.common.SignInButton android:id="@+id/sign_in_button" android:layout_width="match_parent" android:layout_height="wrap_content" /> <com.facebook.login.widget.LoginButton android:id="@+id/login_button" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_vertical"/> 

Paso 3: Resultado Introduzca aquí la descripción de la imagen Paso 4: Actualizado build.gradle con el último gcm

 compile 'com.facebook.android:facebook-android-sdk:4.6.0' compile 'com.google.android.gms:play-services:8.4.0' 

Paso 5: Resultado

Introduzca aquí la descripción de la imagen

  • No se puede encontrar la variable de símbolo GoogleAuthUtil después de actualizar a los servicios de Google Play.
  • Acceda a google plus client desde múltiples actividades
  • Plus.PeopleApi.getCurrentPerson devuelve null
  • Google OAuth2 - token de acceso y token de actualización -> invalid_grant / Code ya se redimió
  • Iniciar sesión con G + - ¿por qué el ámbito "plus.login" no funciona solo?
  • Obtener token de acceso para mi aplicación desde GoogleApiClient en Android
  • No se puede obtener un cumpleaños privado de la cuenta de Google Plus aunque se solicita explícitamente
  • Descargar la imagen de la nueva aplicación Google+ (más)
  • Problema con varias cuentas de Google+ en Android mientras comparte la publicación
  • Aplicación integrada "Enviar comentarios"
  • SHA-1 huella dactilar del certificado keystore
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.