customize Android Facebook Login button customize Android Facebook Login button android android

customize Android Facebook Login button


In order to have completely custom facebook login button without using com.facebook.widget.LoginButton.

According to facebook sdk 4.x,

There new concept of login as from facebook

LoginManager and AccessToken - These new classes perform Facebook Login

So, Now you can access Facebook authentication without Facebook login button as

layout.xml

    <Button            android:id="@+id/btn_fb_login"            .../>

MainActivity.java

    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        FacebookSdk.sdkInitialize(this.getApplicationContext());        callbackManager = CallbackManager.Factory.create();        LoginManager.getInstance().registerCallback(callbackManager,                new FacebookCallback<LoginResult>() {                    @Override                    public void onSuccess(LoginResult loginResult) {                        Log.d("Success", "Login");                    }                    @Override                    public void onCancel() {                        Toast.makeText(MainActivity.this, "Login Cancel", Toast.LENGTH_LONG).show();                    }                    @Override                    public void onError(FacebookException exception) {                        Toast.makeText(MainActivity.this, exception.getMessage(), Toast.LENGTH_LONG).show();                    }                });        setContentView(R.layout.activity_main);        Button btn_fb_login = (Button)findViewById(R.id.btn_fb_login);        btn_fb_login.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                  LoginManager.getInstance().logInWithReadPermissions(MainActivity.this, Arrays.asList("public_profile", "user_friends"));            }        });    }@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    callbackManager.onActivityResult(requestCode, resultCode, data); }


You can use styles for modifiy the login button like this

<style name="FacebookLoginButton">    <item name="android:textSize">@dimen/smallTxtSize</item>    <item name="android:background">@drawable/facebook_signin_btn</item>    <item name="android:layout_marginTop">10dp</item>    <item name="android:layout_marginBottom">10dp</item>    <item name="android:layout_gravity">center_horizontal</item></style>

and in layout

<com.facebook.widget.LoginButton        xmlns:fb="http://schemas.android.com/apk/res-auto"        android:id="@+id/loginFacebookButton"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        fb:login_text="@string/loginFacebookButton"        fb:logout_text=""        style="@style/FacebookLoginButton"/>


The best way I have found to do this, if you want to fully customize the button is to create a button, or any View you want (in my case it was a LinearLayout) and set an OnClickListener to that view, and call the following in the onClick event:

com.facebook.login.widget.LoginButton btn = new LoginButton(this);btn.performClick();