我正在使用以下代码将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" />
答案 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)
通过检查调试器和反编译的类代码,我注意到了:
setStyle
中的真实按钮。它使用进程间绑定API从其他库创建一些类,我无法识别该类,也无法找到其反编译的类代码。因此,它似乎就像一些手动填充放在真正的按钮上,在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"
...... />