Android,样式普通按钮,如默认Facebook按钮

时间:2015-11-04 13:27:07

标签: android facebook button

我正在使用XML登录应用程序,在两个TextView for email和password之后,我想并排放置两个按钮来登录:一个用于在TextViews中使用数据而另一个用于使用Facebook登录。

它的外观如下:

Image

但如果仔细观察,Facebook的按钮会高于另一个按钮。字体大小和字体系列也匹配。

这是我的代码到目前为止,在水平LinearLayout中有两个按钮:

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_gravity="center_horizontal">

    <Button android:id="@+id/email_sign_in_button" 
        style="android:textAppearanceSmall"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/action_sign_in"
        android:textStyle="bold" />

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button_fb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/com_facebook_loginview_log_in_button_long"
        android:paddingTop="10dp"
        android:paddingBottom="10dp" />

</LinearLayout>

修改

我将Parse平台添加到此应用程序,它有一个自定义方法登录Facebook的用户。

ParseFacebookUtils.logInWithReadPermissionsInBackground(this, permissions, new LogInCallback() {
    @Override
    public void done(ParseUser user, ParseException err) {
        if (user == null) {
            Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
        } else if (user.isNew()) {
            Log.d("MyApp", "User signed up and logged in through Facebook!");
        } else {
            Log.d("MyApp", "User logged in through Facebook!");
        }
    }
});

当用户按下Facebook按钮时应该调用此方法,而我无法在com.facebook.login.widget.LoginButton上的点击侦听器上设置它。

解决方案是制作我自己的自定义按钮,但它看起来不像com.facebook.login.widget.LoginButton。

所以我现在的问题是如何将我自己的按钮设计成看起来像Facebook的按钮,但是具有自定义的宽度,高度,字体系列......

1 个答案:

答案 0 :(得分:0)

您可以尝试使用自己的按钮,而不是Facebook提供的按钮。在该按钮的onClick()方法中,您可以启动,例如,在其onCreate()方法中连接到Facebook的新活动。有点喜欢: 公共类FBActivity扩展了Activity {

LoginManager loginManager;
CallbackManager callbackManager;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_fb);

    ArrayList<String> permissionsFB = new ArrayList<>();
    permissionsFB.add("permissions that you need");

    loginManager = LoginManager.getInstance();
    loginManager.logInWithPublishPermissions(this, permissionsFB);

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

    loginManager.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {            

        }

        @Override
        public void onCancel() {

        }

        @Override
        public void onError(FacebookException e) {

        }
    });

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}

}

编辑:您可以使自定义按钮继承FacebookButton样式:

    <Button
            android:id="@+id/myFacebookButton"
            android:layout_width="150dp"
            android:layout_height="40dp"
            android:text="@string/connect"
            android:drawableLeft="@drawable/com_facebook_button_icon"
            style="@style/com_facebook_button"/>