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

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

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

<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

最佳答案

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

  • SignInButton 类在 setStyle 中设置真正的按钮.它使用进程间绑定(bind) 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。

    关于android - 如何在谷歌登录按钮android中居中文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41967615/

    相关文章:

    ios - Google Sign In iOS 无法登录

    firebase - Flutter Google 登录 - 电子邮件数据返回 null

    android - 实现内容占位符作为 Android 中的进度指示器

    android - 即使不在前景中,您如何更改导航栏背景(不仅仅是颜色)?

    Android 读取外部存储在 Android Kitkat 中不起作用

    android - 在 frameLayout 中放置一个按钮

    android - 如何在为您的发布者帐户列出的应用程序下获取应用内产品链接?

    android - setSystemUiVisibility(SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION) 不起作用

    android - 隐藏布局文件中的警告

    Angular 5 import Google gapi witn @types/gapi.auth2 不工作