2013-05-11 4 views

Antwort

78

ich den Text überschreiben am Ende leere Zeichenfolge zu sein und dann die Definition der setBackgroundResource der Schaltfläche auf meine Bild (nicht brauchen die dynamische Login/logout-Text-Funktionalität)

<com.facebook.widget.LoginButton 
     xmlns:fb="http://schemas.android.com/apk/res-auto" 
     android:id="@+id/login_button" 
     android:layout_width="249dp" 
     android:layout_height="45dp" 
     android:layout_above="@+id/textView1" 
     android:layout_centerHorizontal="true" 
     android:layout_gravity="center_horizontal" 
     android:layout_marginBottom="30dp" 
     android:layout_marginTop="30dp" 
     android:contentDescription="@string/login_desc" 
     android:scaleType="centerInside" 
     fb:login_text="" 
     fb:logout_text="" /> 

Und im Code definiert ich die Hintergrund Ressource:

final LoginButton button = (LoginButton) findViewById(R.id.login_button); 
button.setBackgroundResource(R.drawable.facebook); 

Eine Art Problemumgehung, aber ich zog es vor, den Facebook-SDK-Code zu ändern (auch wenn es sehr einfach ist) und ich mache mir jedes Mal Sorgen, wenn ich die Version aktualisiere.

+1

Nur neugierig: Wo haben Sie sogar die Dokumentation/Hilfe über die 'fb: login_text' und solche XML-Attribute gefunden? Es ist genau das, wonach ich suchte, aber ich habe keine Ahnung, wie die Leute darüber stolperten. –

+3

Facebook sdk ist Open Source. Überprüfen Sie seine res/Werte/attrs.xml –

+3

Es zeigt immer noch "f" Symbol von Facebook, wie man das entfernen? – SkyWalker

9

Ja, wenn Sie Text und Bild beide ändern möchten, dann schreiben Sie den folgenden Code.

authButton = (LoginButton) view.findViewById(R.id.authButton); 
authButton.setBackgroundResource(R.drawable.icon); 
authButton.setText("Login"); 
authButton.setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);` 
1

Eine andere Art und Weise

loginButton = (LoginButton) findViewById(R.id.fb_login_button); 
loginButton.setVisibility(View.GONE); 




ImageView ivFbCustomButton = (ImageView) findViewById(R.id.iv_fb_custom_button); 
ivFbCustomButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     com.facebook.login.widget.LoginButton btn = new com.facebook.login.widget.LoginButton(FacebookActivity.this); 
     btn.performClick(); 
    } 
}); 

Hinweis:

Sie haben den Code für zwei Schaltflächen in XML-Datei zu schreiben. Einer ist für die Standard-Facebook-Taste (Wir verstecken es im ersten Schritt). Zweite ist für benutzerdefinierte Schaltfläche