GVKun编程网logo

如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?(fb location above 4g设置)

16

对于想了解如何更改FBSDKLoginButtoniOS8.3/Swift1.2的默认设计?的读者,本文将是一篇不可错过的文章,我们将详细介绍fblocationabove4g设置,并且为您提供关于A

对于想了解如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?的读者,本文将是一篇不可错过的文章,我们将详细介绍fb location above 4g设置,并且为您提供关于Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?、com.facebook.login.widget.LoginButton的实例源码、FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序、Flutter Web-悬停时如何更改Flatbutton TEXT颜色的有价值信息。

本文目录一览:

如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?(fb location above 4g设置)

如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?(fb location above 4g设置)

我目前正在开发App,我需要更改Facebook
SDK提供的Facebook按钮的默认设计。我成功地使提供的按钮透明,并将其粘贴在设计视图上方,并且效果很好(现在设计已经匹配,Facebook
SDK按钮的功能也很好)。我这样做之后出现了问题,因为按钮丢失了它的Ui效果(单击时未突出显示)。如果有人可以帮助我,请给此设计的按钮添加突出显示效果。让我们澄清一下:我已经将UIView设计为按钮,在其上面放置了一个透明的Facebook
SDK按钮,结果是我的设计形状和Facebook按钮的功能同时出现,但失​​去了:单击时没有突出显示效果。

答案1

小编典典

我尝试了以下代码,它以正确的方式提供了功能。但是,单击按钮后,我未能给按钮赋予突出显示效果。这是代码:

{    if (FBSDKAccessToken.currentAccessToken() != nil)        {            // if user logged in then handleTap func will run instead of button functionality            let tap = UITapGestureRecognizer(target: self, action: "handleTap:")            self.btnSignUpwithFaceBook.addGestureRecognizer(tap)        }        else        {            let loginView : FBSDKLoginButton = FBSDKLoginButton()            self.view.addSubview(loginView)            loginView.center = self.btnSignUpwithFaceBook.center            loginView.frame.size.width = self.btnSignUpwithFaceBook.frame.width            loginView.frame.size.height = self.btnSignUpwithFaceBook.frame.height            loginView.frame.origin.x = self.btnSignUpwithFaceBook.frame.origin.x            loginView.frame.origin.y = self.btnSignUpwithFaceBook.frame.origin.y            for subView in loginView.subviews            {                subView.removeFromSuperview()            }            loginView.layer.shadowColor = UIColor.clearColor().CGColor            loginView.setBackgroundImage(nil, forState: UIControlState.Normal)            loginView.setBackgroundImage(nil, forState: UIControlState.Application)            loginView.setBackgroundImage(nil, forState: UIControlState.allZeros)            loginView.setBackgroundImage(nil, forState: UIControlState.Highlighted)            loginView.setBackgroundImage(nil, forState: UIControlState.Reserved)            loginView.setBackgroundImage(nil, forState: UIControlState.Selected)            loginView.setImage(nil, forState: UIControlState.Normal)            loginView.setImage(nil, forState: UIControlState.Application)            loginView.setImage(nil, forState: UIControlState.allZeros)            loginView.setImage(nil, forState: UIControlState.Highlighted)            loginView.setImage(nil, forState: UIControlState.Reserved)            loginView.setImage(nil, forState: UIControlState.Selected)            loginView.backgroundColor = UIColor.clearColor()            // just for test            self.btnSignUpwithFaceBook.layer.borderWidth = 1            self.btnSignUpwithFaceBook.layer.borderColor = UIColor.whiteColor().CGColor            loginView.layer.backgroundColor = UIColor.clearColor().CGColor            loginView.readPermissions = ["public_profile", "email", "user_friends"]            loginView.delegate = self            loginView.setTranslatesAutoresizingMaskIntoConstraints(false)            var constX = NSLayoutConstraint(item: loginView, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.btnSignUpwithFaceBook, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0)            view.addConstraint(constX)            var constY = NSLayoutConstraint(item: loginView, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.btnSignUpwithFaceBook, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0)            view.addConstraint(constY)            let views = ["loginView": loginView]            var constH = NSLayoutConstraint.constraintsWithVisualFormat("H:[loginView(57)]", options: NSLayoutFormatOptions(0), metrics: nil, views: views)            view.addConstraints(constH)            var constW = NSLayoutConstraint.constraintsWithVisualFormat("V:[loginView(281)]", options: NSLayoutFormatOptions(0), metrics: nil, views: views)            view.addConstraints(constW)}

实际上,主要问题是facebookLogInButton是FBSDK的自定义类,而swift并不将其视为uiButton,这就是为什么没有突出显示属性的原因。因此,我希望您的帮助人员能够找到它的要点是找到一种方法,使facebookLoginButton迅速被视为uiButton。

Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?

Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?

在ICS按钮栏的大多数示例中,即Google工程师的这个示例: https://gist.github.com/2357306

我看到了对这些样式的引用:

https://www.jb51.cc/tag/buttonbar/" target="_blank">buttonbarStyle"https://www.jb51.cc/tag/buttonbar/" target="_blank">buttonbarButtonStyle"

所以我打开了Android的attrs.xml,这就是我所看到的:

<!-- Style for buttons within button bars -->
    <attr name="buttonbarButtonStyle" format="reference" />

    <!-- Style for button bars -->
    <attr name="buttonbarStyle" format="reference" />

而已.所以也许这是一种风格,对吧?这是styles.xml:

<style name="Widget.Holo.buttonbar">
        <item name="android:divider">?android:attr/dividerVertical</item>
    </style>

    <style name="Widget.Holo.buttonbar.Button">
    </style>

咦?然而Eclipse和设备能够像这样呈现它们:

那么如何获得正确的尺寸和东西呢?我需要它们的原因是我想在Gingerbread及其下面使用这种类型的按钮栏,它缺少buttonbarStyle属性.因此,他们犯了错误:

解决方法

这是因为样式继承. Widget.Holo.buttonbar也继承了“Widget.Holo”和“Widget”的所有样式.

com.facebook.login.widget.LoginButton的实例源码

com.facebook.login.widget.LoginButton的实例源码

项目:enklave    文件:LoginFacebook.java   
public LoginFacebook(LoginButton login,Activity context,PreferencesShared pref,final Intent intent) {
    callbackManager = CallbackManager.Factory.create();
    this.context = context;
    preferencesShared = pref;
    login.setReadPermissions(Arrays.asList("public_profile","user_friends"));
    login.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            //Log.d("facebook","succes" + loginResult.getAccesstoken().getToken() + "id" + loginResult.getAccesstoken().getExpires() + "data" + loginResult.getAccesstoken().getUserId());
            conectedwithFacebook(loginResult.getAccesstoken().getToken(),intent);
        }

        @Override
        public void onCancel() {
            Log.d("intra","facebook");
        }

        @Override
        public void onError(FacebookException error) {
            Log.d("facebook","error" + error.toString());
        }

    });
}
项目:AndroidBlueprints    文件:FacebookHelper.java   
/**
 * Register call back manager to Google log in button.
 *
 * @param activity    the activity
 * @param loginButton the login button
 */
private void registerCallBackManager(final Activity activity,LoginButton loginButton) {
    loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            mLoginResult = loginResult;
            getUserProfile(activity);
        }

        @Override
        public void onCancel() {
            mFacebookLoginResultCallBack.onFacebookLoginCancel();
        }

        @Override
        public void onError(FacebookException error) {
            mFacebookLoginResultCallBack.onFacebookLoginError(error);
        }
    });
}
项目:social-journal    文件:LoginActivity.java   
void initializefacebookLogin() {
    // Initialize Facebook Login button
    mCallbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook_login);
    loginButton.setReadPermissions("email","public_profile","user_posts","user_photos");
    loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.d(TAG,"facebook:onSuccess:" + loginResult);
            handleFacebookAccesstoken(loginResult.getAccesstoken());
        }

        @Override
        public void onCancel() {
            Log.d(TAG,"facebook:onCancel");
            // ...
        }

        @Override
        public void onError(FacebookException error) {
            Log.w(TAG,"facebook:onError",error);
        }
    });
}
项目:android-RSS-Feed-reader    文件:SignInPresenter.java   
@Override
public void onFacebookLoginBntClick(LoginButton loginButton) {
        mCallbackManager = CallbackManager.Factory.create();
        loginButton.setReadPermissions("email","public_profile");
        loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                handleFacebookAccesstoken(loginResult.getAccesstoken());
            }

            @Override
            public void onCancel() {
            }

            @Override
            public void onError(FacebookException error) {
                getView().showSnackBar(error.getMessage());
            }
        });
}
项目:flavordex    文件:LoginActivity.java   
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mAuth = FirebaseAuth.getInstance();
    mAuthStateListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            final FirebaseUser user = firebaseAuth.getCurrentUser();
            if(user != null) {
                finish();
            }
        }
    };

    setContentView(R.layout.activity_login);

    mSwitcher = findViewById(R.id.switcher);

    setupEmail();
    setupGoogle((SignInButton)findViewById(R.id.button_google));
    setupFacebook((LoginButton)findViewById(R.id.button_facebook));
    setupTwitter((TwitterLoginButton)findViewById(R.id.button_twitter));
}
项目:SplitApp    文件:LoginActivity.java   
private void addLoginButton() {
    LoginButton loginButton = (LoginButton) this.findViewById(R.id.login_button);
    loginButton.setReadPermissions(Arrays.asList("email","user_friends","user_birthday"));
    loginButton.registerCallback(fbCallbackManager,new FacebookCallback<LoginResult>() {

        private ProfileTracker mProfileTracker;

        @Override
        public void onSuccess(LoginResult loginResult) {

        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException error) {

        }
    });
}
项目:Focus-Android-App    文件:LoginActivity.java   
protected void getLoginDetails(LoginButton login_button) {

        // Callback registration
        login_button.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult login_result) {
                getUserInfo(login_result);
            }

            @Override
            public void onCancel() {
                // code for cancellation
            }

            @Override
            public void onError(FacebookException exception) {
                //  code to handle error
            }
        });
    }
项目:pracler    文件:Splash.java   
public void showFacebookLoginButton()
{
    mCallbackManager = CallbackManager.Factory.create();
    firebaseAuth = FirebaseAuth.getInstance();

    facebookLoginButton = (LoginButton) findViewById(R.id.login_button);
    facebookLoginButton.setVisibility(View.VISIBLE);
    facebookLoginButton.setReadPermissions("email","public_profile");
    facebookLoginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult)
        {
            Log.d("facebook","facebook:onSuccess:" + loginResult);
            handleFacebookAccesstoken(loginResult.getAccesstoken());
        }

        @Override
        public void onCancel()
        {
            Log.d("facebook","facebook:cancel:");

        }

        @Override
        public void onError(FacebookException error)
        {
            Log.d("facebook","facebook:error" + error.toString());
            Toast.makeText(getBaseContext(),"서버에 연결할 수 없습니다. 인터넷 연결을 확인해주세요.",Toast.LENGTH_SHORT).show();
        }
    });
}
项目:Addy-Android    文件:SignIn.java   
private void facebookLogIn(View view) {

            LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
            loginButton.setReadPermissions("email");
            // If using in a fragment
            loginButton.setFragment(this);
            // Other app specific specialization
            loginButton.performClick();
            // Callback registration
            loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    // App code
                    Toast.makeText(getContext(),"Logged In Successfully",Toast.LENGTH_SHORT).show();
                    setSessionManagement();
                    startActivity(new Intent(getApplicationContext(),MapsActivity.class));
                }

                @Override
                public void onCancel() {
                    // App code
                    Toast.makeText(getContext(),"LogIn Failed",Toast.LENGTH_SHORT).show();
                }

            @Override
            public void onError(FacebookException exception) {
                // App code
                Toast.makeText(getContext(),Toast.LENGTH_SHORT).show();

            }
        });
    }
项目:quire    文件:WelcomeActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_welcome);
    setStatusBarColor();
    mContext = this;
    initializeViews();

    if (welcomePresenter == null) {
        welcomePresenter = new WelcomePresenter(mContext);
    }

    // Initialize service
    Intent intent = new Intent(mContext,QuireService.class);
    startService(intent);

    Button customButtonFB = (Button) findViewById(R.id.fb_login_button);
    fbLoginButton = (LoginButton) findViewById(R.id.button_fb_login);
    mCallbackManager = CallbackManager.Factory.create();

    customButtonFB.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            fbLoginButton.performClick();
        }
    });

    fbLoginButton.setReadPermissions("name");
    fbLoginButton.setReadPermissions("email");
    fbLoginButton.setReadPermissions("public_profile");

    fbLoginButton.registerCallback(mCallbackManager,mCallback);
}
项目:AddyHINT17    文件:SignIn.java   
private void facebookLogIn(View view) {

            LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button);
            loginButton.setReadPermissions("email");
            // If using in a fragment
            loginButton.setFragment(this);
            // Other app specific specialization
            loginButton.performClick();
            // Callback registration
            loginButton.registerCallback(callbackManager,Toast.LENGTH_SHORT).show();

            }
        });
    }
项目:FinalProject    文件:StartPage02.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_page02);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    facebookSignInBtn = (LoginButton) this.findViewById(R.id.signin_with_facebook_btn);
    list_of_facebook = new ArrayList<>();

    this.setUpFacebookSignIn();
}
项目:FinalProject    文件:NewFacebookFriends.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_new_facebook_friends);
    getSupportActionBar().setTitle("Facebook Friends Posts");
    list_of_facebook = new ArrayList<>();

    facebookSignInBtn = (LoginButton) this.findViewById(R.id.facebook_friends_login);

    this.setUpFacebookSignIn();

}
项目:AndroidBlueprints    文件:FacebookHelper.java   
/**
 * Sign in to google account - with Google's log in button.
 *
 * @param activity    the activity
 * @param callback    the callback to receive the method's result
 * @param loginButton the login button associated with this sign in
 */
public void signIn(@NonNull Activity activity,@NonNull final FacebookLoginResultCallback callback,@NonNull LoginButton loginButton) {
    mCallbackManager = CallbackManager.Factory.create();
    mFacebookLoginResultCallBack = callback;
    initLoginButton(activity,loginButton);
    registerCallBackManager(activity,loginButton);

}
项目:FirebasePost    文件:Registeractivity.java   
private void findViews() {
    mCallbackManager = CallbackManager.Factory.create();
    mAuth = FirebaseAuth.getInstance();
    loginGPlus = (Button) findViewById(R.id.loginGPlus);
    loginGPlus.setonClickListener(this);
    buildGoogleapiclient();
    LoginButton loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.setReadPermissions("email","public_profile");

    loginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.e(TAG,"facebook:onSuccess:" + loginResult);
            handleFacebookAccesstoken(loginResult.getAccesstoken());
        }

        @Override
        public void onCancel() {
            Log.e(TAG,"facebook:onCancel");
            // ...
        }

        @Override
        public void onError(FacebookException error) {
            Log.e(TAG,error);
            // ...
        }
    });

}
项目:MovieManiac    文件:SignInActivity.java   
private void initializefacebookSignIn() {
    // Always logout of facebook when sign in button is shown.
    LoginManager.getInstance().logout();
    LoginButton facebookSignInButton = (LoginButton) findViewById(R.id.facebook_sign_in);
    facebookSignInButton.setReadPermissions("public_profile","email");
    mFacebookCallbackManager = CallbackManager.Factory.create();
    facebookSignInButton.registerCallback(mFacebookCallbackManager,this);
}
项目:analytics-with-rfx    文件:MainActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();
    AppEventsLogger.activateApp(this);


    setContentView(R.layout.activity_main);

    info = (TextView)findViewById(R.id.info);
    loginButton = (LoginButton)findViewById(R.id.login_button);
    loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            info.setText(
                    "User ID: "
                            + loginResult.getAccesstoken().getUserId()
                            + "\n" +
                            "Auth Token: "
                            + loginResult.getAccesstoken().getToken()
            );
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException e) {

        }
    });

    count = (TextView) findViewById(R.id.count);
    sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
}
项目:PlatePicks-Android    文件:LoginFragment.java   
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState) {
    View layoutView =  inflater.inflate(R.layout.login_button,container,false);

    LoginButton loginButton = (LoginButton) layoutView.findViewById(R.id.login_button_b);
    textView = (TextView) layoutView.findViewById(R.id.loginTextView);

    loginButton.setReadPermissions("email");
    loginButton.setFragment(this);
    loginButton.registerCallback(callbackManager,callback);

    return layoutView;
}
项目:Firebase-Login-Example-Project    文件:MainActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    tvstatus = (TextView) findViewById(R.id.tvstatus);
    btnFacebook = (LoginButton) findViewById(R.id.btnFacebook);
    findViewById(R.id.btnGoogle).setonClickListener(this);

    auth = FirebaseAuth.getInstance();
    isSignedIn = FirebaseAuth.getInstance().getCurrentUser() != null; //true = User is signed in
    facebookCallbackManager = CallbackManager.Factory.create();

    initEntities();
}
项目:flavordex    文件:LoginActivity.java   
/**
 * Set up Facebook sign-in.
 *
 * @param button The LoginButton
 */
private void setupFacebook(@NonNull LoginButton button) {
    mFacebookCallbackManager = CallbackManager.Factory.create();

    button.registerCallback(mFacebookCallbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            firebaseAuthWithFacebook(loginResult.getAccesstoken());
        }

        @Override
        public void onCancel() {
            mSwitcher.setdisplayedChild(0);
        }

        @Override
        public void onError(FacebookException e) {
            showError();
        }
    });
    button.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mSwitcher.setdisplayedChild(1);
        }
    });
}
项目:The_busy_calendar    文件:MainActivity.java   
private void initItems() {
    toolBarView = (View) findViewById(R.id.toolbar);
    settingsButton = (ImageButton) findViewById(R.id.settings_button);
    vkLoginButton = (Button) findViewById(R.id.main_btn_vk);
    facebookLoginButton = (LoginButton) findViewById(R.id.main_btn_facebook);
    facebookImage = (ImageView) findViewById(R.id.facebookimage);
    vkimage = (ImageView) findViewById(R.id.vkimage);
    prevMonth = (ImageView) findViewById(R.id.prevMonth);
    nextMonth = (ImageView) findViewById(R.id.nextMonth);
    currentMonth = (TextView) findViewById(R.id.currentMonth);
    calendarView = (GridView) findViewById(R.id.calendar);
}
项目:ReactiveFB    文件:LoginButtonActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login_button);

    loginButton = (LoginButton) findViewById(R.id.fb_button_login);
    result = (TextView) findViewById(R.id.result);

    registerlogin();

}
项目:ReactiveFB    文件:ReactiveLogin.java   
/**
 * Login with com.facebook.login.widget.LoginButton
 * To be called from an android.support.v4.app.Fragment
 *
 * @param loginButton instance of a com.facebook.login.widget.LoginButton
 * @param fragment    instance of support android.support.v4.app.Fragment
 * @return
 */
@NonNull
public static Observable<LoginResult> loginWithButton(@NonNull final LoginButton loginButton,@NonNull final Fragment fragment) {

    checkNotNull(fragment,"fragment == null");
    checkNotNull(loginButton,"loginButton == null");
    ReactiveFB.checkInit();
    // login
    return Observable.create(new LoginWithButtonOnSubscribe(loginButton));
}
项目:ReactiveFB    文件:ReactiveLogin.java   
/**
 * Login with com.facebook.login.widget.LoginButton
 * To be called from an android.app.Fragment
 *
 * @param loginButton instance of com.facebook.login.widget.LoginButton
 * @param fragment    instance of android.app.Fragment
 * @return
 */
@NonNull
public static Observable<LoginResult> loginWithButton(@NonNull final LoginButton loginButton,@NonNull final android.app.Fragment fragment) {

    checkNotNull(fragment,"loginButton == null");
    ReactiveFB.checkInit();
    // login
    return Observable.create(new LoginWithButtonOnSubscribe(loginButton));
}
项目:barber-hour-android    文件:MainActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_main);
    setStatusBarTranslucent(true);

    callbackManager = CallbackManager.Factory.create();
    info = (TextView) findViewById(R.id.info);
    mNewBarberButton = (Button) findViewById(R.id.new_barber_button);
    mNewBarberButton.setonClickListener(newBarberButtonOnClickListener());
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            info.setText(
                    "User ID: "
                            + loginResult.getAccesstoken().getUserId()
                            + "\n" +
                            "Auth Token: "
                            + loginResult.getAccesstoken().getToken()
            );
        }

        @Override
        public void onCancel() {
            info.setText("Login attempt canceled.");
        }

        @Override
        public void onError(FacebookException e) {
            info.setText("Login attempt Failed.");
        }


    });
}
项目:Simple-Facebook-Login    文件:FBLoginActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fblogin);

    mCallbackManager = CallbackManager.Factory.create();
    LoginButton loginButton = (LoginButton) findViewById(R.id.fb_login_button);
    loginButton.registerCallback(mCallbackManager,this);

    if (FbSessionUtils.isLoggedIn()) {
        NavigatorUtils.navigateto(this,NavigatorUtils.createIntentFromTo(this,FbUserDataActivity.class,true /* finish from activity*/));
    }
}
项目:Rocket.Chat-android    文件:LoginActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    mFacebookButton = (LoginButton) findViewById(R.id.FacebookButton);
    setupFacebookLogin();
    mTwitterButton = (TwitterLoginButton) findViewById(R.id.TwitterButton);
    setupTwitterLogin();

    EditText loginEditText = (EditText) findViewById(R.id.LoginEditText);
    EditText passwordEditText = (EditText) findViewById(R.id.PasswordEditText);

    findViewById(R.id.LoginButton).setonClickListener(v -> {
        executeLogin(loginEditText.getText().toString().trim(),passwordEditText.getText().toString().trim());
    });
    findViewById(R.id.ForgotPasswordTextview).setonClickListener(v1 -> {
        openForgotPassword();
    });
    findViewById(R.id.RegistrationTextView).setonClickListener(v -> {
        openRegistrationForResult();
    });

    if (mRxMeteor.isLoggedIn()) {
        Users user = Users.getUser(mRxMeteor.getUserId());
        if (user.getUsername() != null) {
            startMainActivity();
        } else {
            subscribetoUserDataAndStartMainActivity(mRxMeteor.getUserId());
        }
    }

}
项目:The_Elucidated    文件:SignInLoadActivity.java   
public void facebooklogin(View view) {
    LoginButton loginButton = (LoginButton) view.findViewById(R.id.facebook_login_button);
    loginButton.setReadPermissions("public_profile","email");
    callbackManager = CallbackManager.Factory.create();


    loginButton.registerCallback(callbackManager,"facebook:onCancel");
            FirebaseAuth.getInstance().signOut();

        }

        @Override
        public void onError(FacebookException error) {
            Log.d(TAG,error);

        }
    });


    // If using in a fragment

}
项目:ExamplesAndroid    文件:MainActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    //--------------------------------------------//
    FacebookSdk.sdkInitialize(this);//El SDK necesita ser inicializado antes de usar cualquiera de sus métodos,pasando el contexto de la actividad(Activity)
    callbackManager = CallbackManager.Factory.create();//inizializamos el CallbackManager
    //---------------------------------------------//
    setContentView(R.layout.activity_main);

    info = (TextView) findViewById(R.id.info);
    loginButton = (LoginButton) findViewById(R.id.login_button);
    //--------------------------------------------------//

    loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {//Si la autenticacion fue correcta
            info.setText("Login attempt success.");

        }

        @Override
        public void onCancel() {//Si se cancela la solicitus de login
            info.setText("Login attempt canceled.");
        }

        @Override
        public void onError(FacebookException e) {//Si ocurre un error
            info.setText("Login attempt Failed.");
        }
    });
}
项目:Facebook-Friends-list    文件:MainActivity.java   
@Override
public void initializeView() {
    tvLoginResult = (TextView) findViewById(R.id.tv_LoginResult);
    btnFBLogin = (LoginButton) findViewById(R.id.fbButton);
    btnShowFriendsList = (Button) findViewById(R.id.btn_showFriendsList);
    btnLoginFBLoginManager = (Button) findViewById(R.id.but_LoginFBLoginManager);
    btnShowFriendsList.setonClickListener(this);
    btnLoginFBLoginManager.setonClickListener(this);
}
项目:bbqapp-android    文件:LoginFragment.java   
@Override
public void onClick(View v) {
    getProgressbar().setIndeterminate(true);
    if (v instanceof SignInButton) {
        loginManager.login(GooglePlus.ID);
    } else if (v instanceof LoginButton) {
        loginManager.login(Facebook.ID);
    }
}
项目:Droidplate    文件:FBLoginManager.java   
public FBLoginManager init(Context context,Fragment fragment,List<String> readPermissions) {
    this.context = context;
    fbLoginButton = new LoginButton(context);
    fbLoginButton.setReadPermissions(readPermissions);
    fbLoginButton.setFragment(fragment);
    fbLoginButton.registerCallback(callbackManager,facebookCallback);
    return this;

}
项目:OAuth    文件:FacebookActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FacebookSdk.sdkInitialize(getApplicationContext());

    mCallbackManager = CallbackManager.Factory.create();

    setContentView(R.layout.activity_facebook);

    Toolbar toolbar = (Toolbar) findViewById(R.id.activity_toolbar);
    setSupportActionBar(toolbar);

    toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            NavUtils.navigateUpFromSaMetask(FacebookActivity.this);
        }
    });

    LoginButton authButton = (LoginButton) findViewById(R.id.activity_facebook_login_button);
    authButton.setReadPermissions(asList(getResources().getStringArray(R.array.facebook_permissions)));

    LoginManager.getInstance().registerCallback(mCallbackManager,mFacebookCallback);

}
项目:Yourappidea    文件:FbLoginFragment.java   
@Override
public View onCreateView(LayoutInflater inflater,Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.login_facebook,false);
    LoginButton loginButton = (LoginButton) view.findViewById(R.id.navmenufacebook_loginbutton);
    loginButton.setReadPermissions("public_profile","email");
    loginButton.setFragment(this);

    // Hide facebook login button if facebook app not installed
    if (!mFacebookDelegate.isFacebookInstalled()) {
        loginButton.setVisibility(View.GONE);
    }
    return view;
}
项目:Quadro    文件:AuthActivity.java   
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_auth);
    mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);

    mAuth = FirebaseAuth.getInstance();
    mAuthListener = new FirebaseAuth.AuthStateListener() {
        @Override
        public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
            FirebaseUser user = firebaseAuth.getCurrentUser();
            if (user != null) {
                // User is signed in
                Log.d(TAG,"onAuthStateChanged:signed_in:" + user.getUid());
                startActivity(new Intent(AuthActivity.this,HomeActivity.class));
            } else {
                // User is signed out
                Log.d(TAG,"onAuthStateChanged:signed_out");
            }
        }
    };

    mGoogleSignIn = (SignInButton)findViewById(R.id.google_sign_in);
    TextView buttonText = (TextView) mGoogleSignIn.getChildAt(0);
    buttonText.setText(R.string.login_google);
    mGoogleSignIn.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            signIn();
        }
    });
    GoogleSignInoptions googleSignInoptions = new GoogleSignInoptions.Builder(GoogleSignInoptions.DEFAULT_SIGN_IN)
            .requestIdToken(getString(R.string.default_web_client_id))
            .requestemail()
            .build();
    mGoogleapiclient = new Googleapiclient.Builder(getApplicationContext())
            .enableAutoManage(this,new Googleapiclient.OnConnectionFailedListener() {
                @Override
                public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {
                    Toast.makeText(AuthActivity.this,"Coneccao Falhou",Toast.LENGTH_SHORT).show();
                }
            })
            .addApi(Auth.GOOGLE_SIGN_IN_API,googleSignInoptions)
            .build();

    callbackManager = CallbackManager.Factory.create();

    loginButton = (LoginButton) findViewById(R.id.loginButton);
    loginButton.setReadPermissions(Arrays.asList("email"));
    loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            handleFacebookAccesstoken(loginResult.getAccesstoken());
        }

        @Override
        public void onCancel() {
            Toast.makeText(getApplicationContext(),R.string.cancel_login,Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(FacebookException error) {
            Toast.makeText(getApplicationContext(),R.string.error_login,Toast.LENGTH_SHORT).show();
        }
    });
}
项目:andcouchbaseentity    文件:LoginActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    FacebookSdk.sdkInitialize(getApplicationContext());
    setContentView(R.layout.activity_login);

    if (ACTION_logoUT.equals(getIntent().getAction())) {
        logout();
    } else {
        Accesstoken accesstoken = Accesstoken.getCurrentAccesstoken();
        if (accesstoken != null && !accesstoken.isExpired()) {
            loginAsFacebookUser(accesstoken.getToken(),accesstoken.getUserId(),null);
            return;
        }

        if (isLoggedAsGuest()) {
            loginAsGuest();
            return;
        }
    }

    LoginButton facebookLoginButton = (LoginButton) findViewById(R.id.facebook_login_button);
    facebookLoginButton.setReadPermissions("public_profile");

    mCallbackManager = CallbackManager.Factory.create();
    facebookLoginButton.registerCallback(mCallbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            continueFacebookLogin(loginResult);
        }

        @Override
        public void onError(FacebookException error) {
            Log.e(Application.TAG,"Facebook login error",error);
        }

        @Override
        public void onCancel() { }
    });

    Button guestLoginButton = (Button) findViewById(R.id.guest_login_button);
    guestLoginButton.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            loginAsGuest();
        }
    });
}
项目:purple-05    文件:MainActivity.java   
private void faceBookLogIn(){
    callbackManager = CallbackManager.Factory.create();

    LoginButton loginButton = (LoginButton) findViewById(R.id.facebookLogBtn);
    loginButton.setReadPermissions(Arrays.asList("public_profile","email"));
    loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            GraphRequest graphRequest = GraphRequest.newMeRequest(loginResult.getAccesstoken(),new GraphRequest.GraphJSONObjectCallback() {
                @Override
                public void onCompleted(JSONObject object,GraphResponse response) {

                    Intent home_view = new Intent(MainActivity.this,HomeActivity.class);
                    try {
                        home_view.putExtra("userName",(String) object.get("name"));
                        home_view.putExtra("from","faceBook");
                    }catch (JSONException e){

                    }
                    startActivity(home_view);

                }
            });

            Bundle parameters = new Bundle();
            parameters.putString("fields","id,name,email,gender,birthday");
            graphRequest.setParameters(parameters);
            graphRequest.executeAsync();
        }

        @Override
        public void onCancel() {
            setResult(3);
        }

        @Override
        public void onError(FacebookException error) {
            Log.e("LoginErr",error.toString());
        }
    });
}
项目:OSS-green-07    文件:MainActivity.java   
private void faceBookLogIn(){
    callbackManager = CallbackManager.Factory.create();

    LoginButton loginButton = (LoginButton) findViewById(R.id.facebookLogBtn);
    loginButton.setReadPermissions(Arrays.asList("public_profile",error.toString());
        }
    });
}
项目:OSS-purple-06    文件:MainActivity.java   
private void faceBookLogIn(){
    callbackManager = CallbackManager.Factory.create();

    LoginButton loginButton = (LoginButton) findViewById(R.id.facebookLogBtn);
    loginButton.setReadPermissions(Arrays.asList("public_profile",error.toString());
        }
    });
}
项目:movemate_android    文件:LoginActivity.java   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);



    setContentView(R.layout.activity_login);
    FacebookSdk.sdkInitialize(getApplicationContext());
    callbackManager = CallbackManager.Factory.create();
    loginButton = (LoginButton) findViewById(R.id.login_button);
    loginButton.registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            check();
        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException exception) {
            Toast.makeText(LoginActivity.this,"Errore: " + exception,Toast.LENGTH_LONG).show();
        }
    });

    Button btn = (Button) findViewById(R.id.btn);
    btn.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            loginButton.performClick();
        }
    });

    if (isLoggedIn()) {
        check();
    }else{
        btn.setVisibility(View.VISIBLE);
    }



}

FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序

FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序

简化,代码是这样的:

func login() {
     NSLog("Will login with read permissions")
     FBSDKLoginManager().logInWithReadPermissions(
            ["public_profile"],handler: {
                (result: FBSDKLoginManagerLoginResult!,error: NSError!) -> Void in
                    NSLog("Handler is called")
            })
     NSLog("Returning from login")
}

调用它时,它会生成以下日志语句:

2015-05-25 11:35:07.886 MyApp[1213:646722] Will login with read permissions
2015-05-25 11:44:22.048 MyApp[1213:646722] Returning from login

(上面的语句之间的大的时间差异是由于我使用调试器来逐步执行logInWithReadPermissions的内部.没有调试器的运行不会改变行为.)

我已经在安装了Facebook原生应用程序并且我已登录的设备上试过这个,我在没有本机应用程序的设备上试过这个,我从来没有访问过Facebook.我也在模拟器上试过这个.我得到了相同的结果.

我假设这是一个同步调用,但为了以防万一,我试着在调用线程中无限期地等待 – 处理程序仍然没有被调用,并且设备上没有任何可见的事情发生.

我打开了我能找到的所有日志记录:

FBSDKSettings.setLoggingBehavior(
   [FBSDKLoggingBehaviorAppEvents,FBSDKLoggingBehaviorinformational,FBSDKLoggingBehaviorAccesstokens,FBSDKLoggingBehaviorUIControlErrors,FBSDKLoggingBehaviorgraphAPIDebugWarning,FBSDKLoggingBehaviorgraphAPIDebugInfo,FBSDKLoggingBehaviorNetworkRequests,FBSDKLoggingBehaviorCacheErrors,FBSDKLoggingBehaviorDeveloperErrors])

然后,在启动时,我得到这样的:

2015-05-25 11:35:01.320 MyApp[1213:646722] FBSDKLog: Request <#1111>:
  URL:  https://graph.facebook.com/v2.3
  Method:   POST
  UserAgent:    FBiOSSDK.4.1.0
  MIME: multipart/form-data; boundary=3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f
  Body (w/o attachments):   
    batch_app_id:   140xxxxxxxxxxxxx
    batch:  [{"relative_url":"140xxxxxxxxxxxxx?debug=info&fields=app_events_feature_bitmask%2Cname%2Cios_dialog_configs%2Csupports_implicit_sdk_logging%2Cgdpv4_nux_enabled%2Cgdpv4_nux_content%2Cios_supports_system_auth%2Cios_sdk_error_categories&format=json&include_headers=false&sdk=ios","method":"GET"},{"relative_url":"140xxxxxxxxxxxxx?debug=info&fields=app_events_feature_bitmask%2Cname%2Cios_dialog_configs%2Csupports_implicit_sdk_logging%2Cgdpv4_nux_enabled%2Cgdpv4_nux_content%2Cios_supports_system_auth%2Cios_sdk_error_categories&format=json&include_headers=false&sdk=ios","method":"GET"}]

2015-05-25 11:35:01.321 MyApp[1213:646722] FBSDKLog: Request <#1111>:
  URL:  https://graph.facebook.com/v2.3
  Method:   POST
  UserAgent:    FBiOSSDK.4.1.0
  MIME: multipart/form-data; boundary=3i2ndDfv2rTHiSisAbouNdArYfORhtTPEefj3q2f

2015-05-25 11:35:01.329 MyApp[1213:646722] FBSDKLog: FBSDKTimeSpentData Restore: {"numInterruptions":0,"lastSuspendTime":1432544336,"secondsspentInCurrentSession":3}
2015-05-25 11:35:01.363 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents: Recording event @ 1432578901: {
    "_eventName" = "fb_mobile_activate_app";
    "_logTime" = 1432578901;
    "_ui" = UIAlertController;
    "fb_mobile_launch_source" = Unclassified;
}
2015-05-25 11:35:01.364 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents Persist: Read 0 event states. First state has 0 events
2015-05-25 11:35:01.364 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents Persist: Clearing
2015-05-25 11:35:01.365 MyApp[1213:646722] FBSDKLog: FBSDKAppEvents: Recording event @ 1432578901: {
    "_eventName" = "fb_mobile_deactivate_app";
    "_logTime" = 1432578901;
    "_ui" = UIAlertController;
    "_valuetoSum" = 3;
    "fb_mobile_app_interruptions" = 0;
    "fb_mobile_launch_source" = Unclassified;
    "fb_mobile_time_between_sessions" = "session_quanta_5";
}
2015-05-25 11:35:01.781 MyApp[1213:646722] FBSDKLog: FBSDKURLConnection <#1114>:
  Duration: 460 msec
Response Size: 1 kB
  MIME type: application/json
2015-05-25 11:35:01.783 MyApp[1213:646722] FBSDKLog: Response <#1111>
Duration: 461 msec
Size: 2011 kB
Response Body:
(
        {
        body =         {
            "app_events_feature_bitmask" = 1;
            "gdpv4_nux_content" = "New! You're in control - choose what info you want to share with apps.";
            "gdpv4_nux_enabled" = 0;
            id = 140xxxxxxxxxxxxx;
            "ios_dialog_configs" =             {
                data =                 (
                                        {
                        name = like;
                        url = "/connect/dialog/MPlatformlikeJSDialog";
                        versions =                         (
                            20140410
                        );
                    },{
                        name = appinvites;
                        url = "/connect/dialog/MPlatformAppInvitesJSDialog";
                        versions =                         (
                            20140410
                        );
                    }
                );
            };
            "ios_sdk_error_categories" =             (
                                {
                    items =                     (
                                                {
                            code = 102;
                        },{
                            code = 190;
                        }
                    );
                    name = login;
                    "recovery_message" = "Please log into this app again to reconnect your Facebook account.";
                    "recovery_options" =                     (
                        OK,Cancel
                    );
                },{
                    items =                     (
                                                {
                            code = 341;
                        },{
                            code = 9;
                        },{
                            code = 2;
                        },{
                            code = 4;
                        },{
                            code = 17;
                        }
                    );
                    name = transient;
                    "recovery_message" = "The server is temporarily busy,please try again.";
                    "recovery_options" =                     (
                        OK
                    );
                }
            );
            "ios_supports_system_auth" = 1;
            name = MyApp;
            "supports_implicit_sdk_logging" = 1;
        };
        code = 200;
    },{
        body =         {
            "app_events_feature_bitmask" = 1;
            "gdpv4_nux_content" = "New! You're in control - choose what info you want to share with apps.";
            "gdpv4_nux_enabled" = 0;
            id = 140xxxxxxxxxxxxx;
            "ios_dialog_configs" =             {
                data =                 (
                                        {
                        name = like;
                        url = "/connect/dialog/MPlatformlikeJSDialog";
                        versions =                         (
                            20140410
                        );
                    },please try again.";
                    "recovery_options" =                     (
                        OK
                    );
                }
            );
            "ios_supports_system_auth" = 1;
            name = MyApp;
            "supports_implicit_sdk_logging" = 1;
        };
        code = 200;
    }
)

2015-05-25 11:35:01.841 MyApp[1213:646722] FBSDKLog: Dynamically loaded library at /System/Library/Frameworks/Accounts.framework/Accounts

或这个:

2015-05-25 12:04:59.336 MyApp[1221:650047] FBSDKLog: FBSDKTimeSpentData Restore: {"numInterruptions":0,"secondsspentInCurrentSession":3}
2015-05-25 12:04:59.343 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents: Recording event @ 1432580699: {
    "_eventName" = "fb_mobile_activate_app";
    "_logTime" = 1432580699;
    "_ui" = UIAlertController;
    "fb_mobile_launch_source" = Unclassified;
}
2015-05-25 12:04:59.344 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents Persist: Read 0 event states. First state has 0 events
2015-05-25 12:04:59.344 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents Persist: Clearing
2015-05-25 12:04:59.345 MyApp[1221:650047] FBSDKLog: FBSDKAppEvents: Recording event @ 1432580699: {
    "_eventName" = "fb_mobile_deactivate_app";
    "_logTime" = 1432580699;
    "_ui" = UIAlertController;
    "_valuetoSum" = 3;
    "fb_mobile_app_interruptions" = 0;
    "fb_mobile_launch_source" = Unclassified;
    "fb_mobile_time_between_sessions" = "session_quanta_5";
}

无论哪种方式,我的处理程序从未被调用,但logInWithReadPermissions函数返回正常.

我在AppDelegate中实现了以下所有内容:

func application(application: UIApplication,didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

   FBSDKApplicationDelegate.sharedInstance().application(
       application,didFinishLaunchingWithOptions: launchOptions)
}

func applicationDidBecomeActive(application: UIApplication) {
    FBSDKAppEvents.activateApp()
}

func application(application: UIApplication,openURL url: NSURL,sourceApplication: String?,annotation: AnyObject?) -> Bool {

    return FBSDKApplicationDelegate.sharedInstance().application(
        application,openURL: url,sourceApplication: sourceApplication,annotation: annotation)
}

我在Info.plist中有这些行:

<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fb140xxxxxxxxxxxxx</string>
        </array>
    </dict>
</array>
<key>FacebookAppID</key>
<string>140xxxxxxxxxxxxx</string>
<key>FacebookdisplayName</key>
<string>MyApp</string>

我在上面遗漏了什么?如果没有,我该如何进一步调试呢?我可以打开或关闭的任何日志记录?我在XCode或Facebook方面的应用程序设置中的任何人都可以想到我可以看到的东西?

解决方法

@H_301_60@ 你说:

“I tried waiting indefinitely in the calling thread — the handler is
still never called,and nothing visible is happening on the device.”

这个调用绝对不是同步的,如果你让主线程忙于紧密的等待循环,那么它将无法“回电”.

要检查的另一件事是确保您的应用程序委托也没有实现

func application(app: UIApplication,options: [String : AnyObject]) -> Bool {

如果在app delegate中实现此方法,则将忽略其他实现:

func application(application: UIApplication,annotation: AnyObject?) -> Bool

Flutter Web-悬停时如何更改Flatbutton TEXT颜色

Flutter Web-悬停时如何更改Flatbutton TEXT颜色

您可以在下面复制粘贴运行完整代码
您可以使用MouseRegion的{​​{1}}属性

代码段

onHover

工作演示

enter image description here

完整代码

void _incrementExit(PointerEvent details) {
    setState(() {
      textColor = Colors.blue;
      _exitCounter++;
    });
  }

void _updateLocation(PointerEvent details) {
    setState(() {
      textColor = Colors.red;
      x = details.position.dx;
      y = details.position.dy;
    });
  }
  
return MouseRegion(
      onEnter: _incrementEnter,onHover: _updateLocation,onExit: _incrementExit,child: FlatButton(
        color: Colors.white,textColor: Colors.teal[700],//when hovered text color change
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(5),
,

对于 textButton,我们可以使用 foregroundColorButtonStyle 属性。

TextButton(
style: ButtonStyle(
foregroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
if (states.contains(MaterialState.focused))
  return Colors.red;
if (states.contains(MaterialState.hovered))
    return Colors.green;
if (states.contains(MaterialState.pressed))
    return Colors.blue;
return Colors.yellow; // null throus error in flutter 2.2+.
}),),onPressed: () { },child: Text('TextButton with custom overlay colors'),)
,

也有一个使用MouseRegion实现此功能的软件包。

https://pub.dev/packages/hovering

示例:

HoverButton(
  onpressed: () {​​​​​​
    print('test');
  }​​​​​​,color: Colors.green,hoverColor: Colors.red,hoverTextColor: Colors.blue,child: Text('test'),)
,

您可以像这样更改按钮样式的 foregroundColor 属性:

ElevatedButton.styleFrom().copyWith(
      backgroundColor: MaterialStateProperty.resolveWith<Color?>(
        (states) {
          if (states.contains(MaterialState.hovered)) {
            return Colors.blue;
          } else if (states.contains(MaterialState.pressed)) {
            return Colors.yellow;
          }
          return Colors.red;
        },foregroundColor: MaterialStateProperty.resolveWith<Color?>(
        (states) {
          if (states.contains(MaterialState.hovered)) {
            return Colors.green;
          }
          return Colors.black;
        },);

关于如何更改FBSDKLoginButton iOS 8.3 / Swift 1.2的默认设计?fb location above 4g设置的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于Android的默认样式(特别是ButtonBar和ButtonBar.Button)是如何呈现的?、com.facebook.login.widget.LoginButton的实例源码、FBSDKLoginManager.loginWithReadPermissions不在iOS上调用处理程序、Flutter Web-悬停时如何更改Flatbutton TEXT颜色的相关信息,请在本站寻找。

本文标签: