自定义 Google Plus 登录按钮和 Facebook 登录按钮

Posted

技术标签:

【中文标题】自定义 Google Plus 登录按钮和 Facebook 登录按钮【英文标题】:customize Google Plus Sign in Button And Facebook Login Button 【发布时间】:2015-12-16 06:52:57 【问题描述】:

我需要,如下图所示

据我所知,Facebook 登录按钮通过文本大小和填充来制作宽度和高度

要更改 Google 登录按钮,我使用了以下方法:

private void setGooglePlusButton(SignInButton signInButton, String buttonText) 
    // ExceptionHelpers.dLog("GOOGLE_PLUS_TAG", "Child Count : "+signInButton.getChildCount());
    signInButton.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    for (int i = 0; i < signInButton.getChildCount(); i++) 
        View v = signInButton.getChildAt(i);
        // ExceptionHelpers.dLog("GOOGLE_PLUS_TAG", "Type Of Child : "+v.getClass().getName());
        if (v instanceof TextView) 
            TextView tv = (TextView) v;
            tv.setText(buttonText);
            tv.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            tv.setBackgroundResource(R.drawable.google_background_drawable);
            tv.setCompoundDrawablesWithIntrinsicBounds(R.drawable.facebook_compound_drawable, 0, 0, 0);
            int padding = (int) getResources().getDimension(R.dimen.header_padding);
            int drawablePadding = (int) getResources().getDimension(R.dimen.header_padding);
            tv.setPadding(padding, padding, padding, padding);
            tv.setCompoundDrawablePadding(drawablePadding);
            tv.setTextColor(getResources().getColor(R.color.white_color));
            tv.setTextSize(getResources().getDimension(R.dimen.font_title));
            return;
        
    

和 Facebook 登录按钮样式:

<style name="FacebookLoginButton">
    <item name="android:layout_marginTop">@dimen/adapter_mark_padding</item>
    <item name="android:layout_marginBottom">@dimen/adapter_mark_padding</item>
    <item name="android:padding">@dimen/header_padding</item> <!-- @dimen/adapter_mark_padding -->
    <item name="android:textSize">@dimen/font_title</item>
    <item name="android:textColor">@color/white_color</item>
    <item name="android:background">@drawable/facebook_background_drawable</item>
    <item name="android:drawableLeft">@drawable/facebook_compound_drawable</item>
    <item name="android:drawablePadding">@dimen/header_padding</item>
</style>

输出是:

【问题讨论】:

【参考方案1】:
<ImageView
    android:id="@+id/fb_new_iv"
    android:layout_
    android:layout_
    android:layout_centerHorizontal="true"
    android:src="@mipmap/ic_launcher" />

<RelativeLayout
    android:id="@+id/fb_layout"
    android:layout_
    android:layout_
    android:visibility="gone">

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_
        android:layout_ />
</RelativeLayout>

将登录Facebook代码的代码放在ImageView的点击监听器中 它会工作的

【讨论】:

【参考方案2】:

对于 Facebook,您需要使用样式:

<style name="FacebookLoginButton">
    <item name="android:textSize">15dp</item>
    <item name="android:textAllCaps">false</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:textColor">@color/colorWhite</item>
    <item name="android:paddingLeft">13dp</item>
    <item name="colorButtonNormal">@color/colorAccent</item>
    <item name="android:paddingTop">11dp</item>
    <item name="android:paddingBottom">11dp</item>
    <item name="android:layout_marginLeft">4dp</item>
    <item name="android:layout_marginRight">5dp</item>
</style>

应用这样的样式

<com.facebook.login.widget.LoginButton
        xmlns:facebook="http://schemas.android.com/apk/res-auto"
        android:id="@+id/login_button"
        android:layout_
        android:layout_
        android:layout_weight="1"
        style="@style/FacebookLoginButton"
        facebook:com_facebook_login_text="@string/login_facebook"
        facebook:com_facebook_logout_text="@string/login_facebook"
        android:elevation="2dp"
        />

对于 google,您可以使用具有您想要的样式的普通按钮

  <Button
                android:id="@+id/button_googlePlus"
                android:layout_
                android:layout_
                android:layout_weight="1"
                android:text="@string/login_google"
                android:background="?attr/selectableItemBackground"
                android:textColor="@color/colorWhite"
                android:textAllCaps="false"
                android:textSize="15dp"
                android:drawableLeft="@drawable/ic_google"
                android:paddingLeft="40dp"
                android:paddingRight="40dp"
                />

【讨论】:

以上是关于自定义 Google Plus 登录按钮和 Facebook 登录按钮的主要内容,如果未能解决你的问题,请参考以下文章

模拟器中的 Google Play 服务,实现 Google Plus 登录按钮等

iOS:同时使用 Facebook 和 Google,Google Plus 登录

自定义 Google 登录按钮 - iOS

iOS sdk 中的 Google Plus 登录按钮框架

Google Plus 登录帐户选择对话框问题

google plus 应用注销按钮的创建和功能