我正在使用XML登录应用程序,在两个TextView for email和password之后,我想并排放置两个按钮来登录:一个用于在TextViews中使用数据而另一个用于使用Facebook登录。
它的外观如下:
但如果仔细观察,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的按钮,但是具有自定义的宽度,高度,字体系列......
答案 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"/>