如何在谷歌登录按钮android中心文本

时间:2017-01-31 21:15:09

标签: android android-layout google-signin text-alignment

我正在使用以下代码将google登录按钮放在我的应用程序中。但是按钮中的文字偏离中心。我怎样才能让它居中?

<com.google.android.gms.common.SignInButton
        android:id="@+id/sign_in_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:visibility="visible"
        android:layout_marginRight="50dp"
        android:layout_marginLeft="50dp" />

enter image description here

5 个答案:

答案 0 :(得分:1)

最好自己创建一个按钮。 我总是喜欢这种方法,因为我可以根据需要开发任何类型的谷歌登录按钮。

<RelativeView
 android:height="wrap_content"
 android:width="match_parent"
 android:marginLeft="20dp"
 android:marginRight="20dp">
      <ImageButton
         android:parentRight="true"
         android:id="google_icon"
         android:background="@null"
         android:padding="10dp"/>
      <TextView
         android:id="google_text"
         android:height="wrap_content"
         android:width="match_parent"
         android:centerHorizontal="true"
         android:text="Google Login"
         android:padding="10dp"/>
</RelativeView>

以上是您可以准确使用的代码结构,以实现您想要的目标。

答案 1 :(得分:1)

通过检查调试器和反编译的类代码,我注意到了:

  • SignInButton类设置setStyle中的真实按钮。它使用进程间绑定API从其他库创建一些类,我无法识别该类,也无法找到其反编译的类代码。
  • 内部按钮设置了侧边衬垫,侧边有较大的G图标。
  • G图标通过背景drawable显示,而不是TextView drawableStart。

因此,它似乎就像一些手动填充放在真正的按钮上,在G图标的一侧。为什么他们会这样做,不知道。从上面可以看出,在按钮从XML中膨胀后“修复”填充是非常安全的。我认为这在RTL的情况下也是安全的,因为带有图标的一侧的填充总是更大,我想(或者我当然希望如此,有人请让我知道如果这在RTL中被破坏):

    loginBinding!!.googButton.getChildAt(0)?.let {
        val smaller = Math.min(it.paddingLeft, it.paddingRight)
        it.setPadding(smaller, it.paddingTop, smaller, it.paddingBottom)
    }

当然,这是Kotlin。

答案 2 :(得分:0)

只需使用您自己的自定义视图按钮,而不是使用其内置按钮。但是你需要遵循指南。甚至facebook按钮我根据我的需要定制..

<RelativeLayout
    android:layout_width="300dp"
    android:layout_height="50dp"
    android:layout_marginTop="10dp"
    android:gravity="center"
    android:layout_gravity="center"
    android:background="@drawable/border_radius_white"
    android:clickable="true"
    android:id="@+id/google_signin" >

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/g_logo"
        android:adjustViewBounds="true"
        android:layout_gravity="center_vertical"
        android:padding="12dp"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:typeface="normal"
        android:textSize="@dimen/log_button_size"
        android:text="@string/text_sign_in_with_google"
        android:textStyle="bold"
        android:textColor="@color/scGrey"/>

</RelativeLayout>

答案 3 :(得分:0)

解决这个问题的一种简单方法是在文本后添加空格。

android:text =“与Google联系”

我将其更改为

android:text =“与Google连接_____________”

用空格替换下划线

但这是使用自定义按钮“ com.shobhitpuri.custombuttons.GoogleSignInButton”

答案 4 :(得分:-1)

使用gravity修复文字中心:

<com.google.android.gms.common.SignInButton
  ......
  android:gravity="center_vertical|center"
  ...... />