安卓谷歌加登录自定义化

5
我正在创建一款Android应用程序,目前正在实现社交网络登录功能。
Facebook的按钮很好用,但Google+的按钮是另一种语言。而且,它只说“登录”,我希望它说“使用Google登录”。
我是Android编程的新手,发现我需要制作自定义按钮,但不知道如何开始(从哪里开始,如何调用)并使其看起来像谷歌加号。
有人可以给我一点帮助吗?
谢谢
4个回答

7
尝试使用此函数更改 Google Plus 按钮文本。
protected void setGooglePlusButtonText(SignInButton signInButton,
        String buttonText) {
    for (int i = 0; i < signInButton.getChildCount(); i++) {
        View v = signInButton.getChildAt(i);

        if (v instanceof TextView) {
            TextView tv = (TextView) v;
            tv.setTextSize(15);
            tv.setTypeface(null, Typeface.NORMAL);
            tv.setText(buttonText);
            return;
        }
    }
}

3
除非你想向用户大喊大叫,否则最好也加上 "tv.setAllCaps(false);"。 - swooby
无法形容这个答案为我节省了多少时间和精力! - Sunny R Gupta

5
我找到了两种方法:
1) 使用自定义按钮进行处理:

2) Use CSS:

2) 使用 CSS:

<Button
    android:id="@+id/btnGooglePlus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:background="@drawable/common_signin_btn_text_dark"
    android:text="@string/common_signin_button_text_long"
    android:textColor="@android:color/white"
    android:textAllCaps="false"
    android:textSize="15sp"
    android:paddingEnd="16dp"
    android:paddingStart="62dp"/>

2) Don't fight it (too much):

<com.google.android.gms.common.SignInButton
    android:id="@+id/btnGooglePlus"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"/>

mGooglePlusSignInButton = (SignInButton) findViewById(R.id.btnGooglePlus);
mGooglePlusSignInButton.setSize(SignInButton.SIZE_WIDE);
setGooglePlusTextAllCaps(mGooglePlusSignInButton, false);

public static void setGooglePlusTextAllCaps(SignInButton signInButton, boolean allCaps)
{
    for (int i = 0; i < signInButton.getChildCount(); i++)
    {
        View v = signInButton.getChildAt(i);

        if (v instanceof TextView)
        {
            TextView tv = (TextView) v;
            tv.setAllCaps(allCaps);
            return;
        }
    }
}

主要的技巧似乎是“mGooglePlusSignInButton.setSize(SignInButton.SIZE_WIDE);”方法。

1
当我尝试使用自定义按钮时,登录片段崩溃并显示以下错误:android.support.v7.widget.AppCompatButton无法转换为com.google.android.gms.common.SignInButton。 - edwinj
方法1对SignIn按钮做了什么? - Yeahia2508
这只是一个使用官方谷歌资源的普通按钮。由您负责处理onClick事件和实现呼叫以实际登录...这就是我说“1)应对它”的原因。 - swooby

3

请按照以下方式设置 app:buttonSize="wide"

<com.google.android.gms.common.SignInButton
        android:id="@+id/sign_in_button"
        android:layout_width="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_height="wrap_content"
        app:buttonSize="wide"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="48dp"/>

但是,不要忘记在顶部添加这个XML命名空间前缀

xmlns:app="http://schemas.android.com/apk/res-auto"

1

3
这在SignInButton类上不起作用,它只适用于自定义的Button/ImageButton。它们的默认图像甚至没有为Android可绘制资源有效命名,如果他们提供了一个选择器drawable来表示禁用/聚焦/按下/正常状态,那就好了! :( - swooby

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接