android - 为 Google 登录自定义新的 Android MaterialButton
问题描述
在迁移到 之前AndroidX / MaterialComponents
,我已将 自定义Buttons
为如下所示。
< Button
android: id = "@+id/customGoogleSignInBtn"
style = "@style/SocialLoginBtnStyle"
android: background = "@color/googleColor"
android: drawableStart = "@drawable/logo_google_sign_in_btn_normal_46dp"
android: drawableLeft = "@drawable/logo_google_sign_in_btn_normal_46dp"
android: foreground = "?attr/selectableItemBackground"
android: paddingStart = "1dp"
android: paddingLeft = "1dp"
android: paddingEnd = "1dp"
android: paddingRight = "1dp"
android: text = "@string/google_sign_in"
android: textStyle = "bold" / >
迁移到 new 后MaterialComponents
,我无法自定义MaterialButton
外观相同的方式。
我面临的具体挑战是,我无法设置Google
图标,而且默认情况下左侧填充太多。
<com.google.android.material.button.MaterialButton
style="@style/Widget.MaterialComponents.Button.Icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="24dp"
android:layout_marginRight="24dp"
app:iconTintMode="src_atop"
app:icon="@drawable/logo_google_sign_in_btn_normal_46dp"
android:text="@string/google_sign_in"
android:textAllCaps="false"
app:backgroundTint="@color/googleColor"
app:iconPadding="0dp" />
我该如何定制这个?找不到太多帮助MaterialButton
。
解决方案
我最终继承自,androidx.appcompat.widget.AppCompatButton
而不仅仅是Button
.
<androidx.appcompat.widget.AppCompatButton
android:id="@+id/customGoogleSignInBtn"
style="@style/SocialLoginBtnStyle"
android:background="@color/googleColor"
android:drawableStart="@drawable/logo_google_sign_in_btn_normal_46dp"
android:drawableLeft="@drawable/logo_google_sign_in_btn_normal_46dp"
android:foreground="?attr/selectableItemBackground"
android:paddingStart="1dp"
android:paddingLeft="1dp"
android:paddingEnd="1dp"
android:paddingRight="1dp"
android:text="@string/google_sign_in"
android:textStyle="bold" />
推荐阅读
- c# - 在C#中转换Long中的十进制值时出现类型转换错误
- swiftui - iOS 14 的 iOS 应用和小部件之间的通信
- c# - c# HttpClient post response content-type application/json
- excel - 如何发送具有自定义时间和与会者的多个 Outlook 邀请?
- java - 当我编译时,它说在 deque java 中找不到符号,我也不知道为什么剂量 pushleft 包含这一行 left = (left+1) % queue.length;
- python - 检索未知文件夹的文件夹名称
- android - 不推荐使用 getAdapterPosition()
- botframework - 无法访问应用程序。请在 v4 VA 中的自适应卡上重试
- kotlin - 如何在 Gradle 插件中表达项目依赖关系?
- java - 当 obj 可以为空时,java 中的 synchronized(obj) 块