Using custom login button with Twitter Fabric?

前端 未结 5 1860
名媛妹妹
名媛妹妹 2021-01-31 04:27

I have been trying to use a normal button to execute the authentication process with the twitter sdk but it does not seem to work. Anyone have tried anything similar?

5条回答
  •  悲&欢浪女
    2021-01-31 05:01

    Luis from Developer Relations team at Twitter. Fabric will support theming on the future, meanwhile you can customize the button by creating a custom view that inherits from TwitterLoginButton.

    Cannonball sample app implements a custom button:

    public class CannonballTwitterLoginButton extends TwitterLoginButton {
        public CannonballTwitterLoginButton(Context context) {
            super(context);
            init();
        }
    
        public CannonballTwitterLoginButton(Context context, AttributeSet attrs) {
            super(context, attrs);
            init();
        }
    
        public CannonballTwitterLoginButton(Context context, AttributeSet attrs, int defStyle) {
            super(context, attrs, defStyle);
            init();
        }
    
        private void init() {
            if (isInEditMode()){
                return;
            }
            setCompoundDrawablesWithIntrinsicBounds(getResources().getDrawable(R.drawable
                    .ic_signin_twitter), null, null, null);
            setBackgroundResource(R.drawable.sign_up_button);
            setTextSize(20);
            setPadding(30, 0, 10, 0);
            setTextColor(getResources().getColor(R.color.tw__blue_default));
            setTypeface(App.getInstance().getTypeface());
        }
    }
    

    https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/view/CannonballTwitterLoginButton.java

    Layout file:

    
    

    https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/res/layout/activity_login.xml

    Callback setup:

    private void setUpTwitterButton() {
        twitterButton = (TwitterLoginButton) findViewById(R.id.twitter_button);
        twitterButton.setCallback(new Callback() {
            @Override
            public void success(Result result) {
                SessionRecorder.recordSessionActive("Login: twitter account active", result.data);
                startThemeChooser();
            }
    
            @Override
            public void failure(TwitterException exception) {
                Toast.makeText(getApplicationContext(),
                        getResources().getString(R.string.toast_twitter_signin_fail),
                        Toast.LENGTH_SHORT).show();
                Crashlytics.logException(exception);
            }
        });
    }
    

    https://github.com/twitterdev/cannonball-android/blob/master/app/src/main/java/io/fabric/samples/cannonball/activity/LoginActivity.java

    I strongly recommend you to clone the code and take a look on it.

提交回复
热议问题