2013-05-30 8 views
12

L'oggetto predefinito Facebook LoginButton e l'oggetto pulsante Google SignIn hanno aspetti completamente diversi e non si adattano al mio layout esistente. Per quanto ne so, questi oggetti non sono risorse che posso modificare senza modificare la libreria stessa (dove presumerei che questi componenti siano anche open source)Android google signin e facebook pulsante di accesso sembrano completamente diversi

Come le persone si occupano di questo? Ho visto app con opzioni di accesso per entrambi quelli che utilizzano i propri pulsanti personalizzati, ma nella mia implementazione sto utilizzando quegli oggetti che chiamano automaticamente le rispettive librerie al clic.

posso naturalmente immersioni più in profondità, ma mi sento come sto scoprendo l'acqua calda non-così-evidente se lo facessi

<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" /> 

Questo oggetto non è così, ovviamente, un pulsante, e non ho ancora ispezionato per vedere se è davvero un pulsante.

Devo utilizzare diverse risorse sia per il pulsante di accesso di Google+ che per quello di Facebook.

Quello che ho

Un esempio Android Mi piace (Duolingo app)

edit: dopo alcuni molto semplici regolazioni di layout, questo è il risultato (in modalità orizzontale, solo per illuminare il problema)

questi pulsanti sono ancora molto diversi e ho bisogno di una risorsa diversa che continuerà ad accedere ai metodi corretti. Ho ottenuto come farlo con Facebook, grazie agli esempi, ma l'accesso a Google è abbastanza criptico per me in questo momento

+0

avete provato impostando l'attributo layout_width a una larghezza effettiva invece di wrap_content? –

+0

ok ora mi sento cognitivamente negligente, @PatrickEvans, forse posso metterlo in un FrameLayout e impostare i pulsanti per match_parent – CQM

+0

@PatrickEvans okay, quindi li ho fatti allineare con i parametri 'match_parent', ma sembrano ancora completamente diversi. Il tubo | tra il logo e il resto del pulsante si trovano in posizioni diverse, il pulsante di Facebook sembra orribile in modalità orizzontale ... Mi chiedo in che modo le altre persone si occupano di questo – CQM

risposta

11

Per modificare il testo sul pulsante uso Facebook:

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

Sarà inoltre necessario aggiungere questo al pulsante:

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

in questo modo:

<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" 
     /> 
1

I pulsanti non sono stilizzati nello stesso modo - curva diversa sugli angoli e uso di ombre Quindi non è possibile farli sembrare esattamente lo stesso. Il più vicino ho potuto ottenere era di fare un layout lineare verticale con una larghezza precisa del 215dip - e impostare la larghezza dei pulsanti da match_parent:

enter image description here

Questo utilizzato il seguente 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 il pulsante Google+, è possibile utilizzare semplicemente il proprio asset - com.google.android.gms.common.SignInButton si comporta come android.widget.Button e si registra un gestore onClick nel modo normale. Basta essere sicuri di seguire le linee guida di branding di Google quando si crea la risorsa:

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

Nota, tuttavia, che il pulsante Google+ fa fornire traduzioni di cui avrete bisogno per creare da soli se si implementa il proprio pulsante in diverse lingue.

+10

Mi piace come un pulsante dice Accedi e l'altro Accedi;) –

+0

Dai un'occhiata a come li ho personalizzati per sembrare esatti. http://karunadheera.com/index.php/archives/160 – prageeth

+0

Il link è morto, puoi ripubblicare? –

3

Try Questo: Aggiungi questo metodo alla tua attività:

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; 
      } 
     } 
    } 

Aggiungete la seguente riga nel onCreateMethod (in cui è stato init i id):

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

Con l'ultimo SDK, entrambi i pulsanti è simile. Il codice e i risultati sono indicati di seguito.

Fase 1: build.gradle

di compilazione 'com.facebook.android:facebook-android-sdk:4.6.0'

di compilazione 'com.google.android.gms: Play- servizi: 7.5.0'

Fase 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"/> 

Fase 3: Risultato enter image description here Fase 4: Aggiornato con le ultime build.gradle GCM

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

Fase 5: Risultato

enter image description here

+0

Con i nuovi SDK diventa disgustoso, quindi ci stanno facendo infrangere le "regole" dei loro marchi ... – Galya

Problemi correlati