【问题标题】:Android : AccountPicker set Light ThemeAndroid : AccountPicker 设置 Light Theme
【发布时间】:2014-03-29 16:01:42
【问题描述】:

是否可以设置选择器对话框的主题?

import com.google.android.gms.common.AccountPicker;
....
String[] accountTypes = new String[]{"com.google"};
Intent intent = AccountPicker.newChooseAccountIntent(null, null,
                accountTypes, false, null, null, null, null);
activity.startActivityForResult(intent, REQUEST_CODE_PICK_ACCOUNT);

我的基本应用主题是android:Theme.Light,但该对话框是暗的。 谢谢。

【问题讨论】:

  • @Dayan 不是重复的。这里的海报询问有关更改我们无法控制的对话框的主题(我们没有创建它)。您链接到的问题中的海报询问有关更改他/她创建的对话框的主题。

标签: android google-play-services android-theme google-authenticator android-authenticator


【解决方案1】:

您可以在覆盖方法newChooseAccountIntent(Account var0, ArrayList<Account> var1, String[] var2, boolean var3, String var4, String var5, String[] var6, Bundle var7) {} 的父类中定义的任何参数时更改它

通过将其添加到代码中来更改它非常简单...

Intent intent = AccountPicker.newChooseAccountIntent(null, null, new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE}, false, null, null, null, null). putExtra("overrideTheme", 1); startActivityForResult(intent, REQUEST_CODE_EMAIL);

1 表示浅色主题

0 表示黑暗主题

【讨论】:

  • 它不能在 android 10 google pixel 2 上运行你能告诉我为什么吗?
【解决方案2】:

如果您想更改对话框的主题,您应该将newChooseAccountIntent 更改为zza 并添加两个整数参数。第一个用于覆盖主题并将其设置为 1 会将对话框主题更改为浅色。

String[] accountTypes = new String[]{"com.google"};
Intent intent = AccountPicker.zza(null, null, accountTypes, false, null, null, null, null, false, 1, 0);
startActivityForResult(intent, REQUEST_CODE_PICK_ACCOUNT);

【讨论】:

  • 我很好奇这里还有什么其他主题?
  • 我找不到任何可以回答这个问题的文档或代码。你可以尝试一下,如果你发现更多关于它的信息,请告诉我们:)
  • 仅供参考,这似乎是一个内部/私有 API...所以将来使用它可能会中断。
  • 从 GMS 16.x.x 开始,此方法已消失。但是,您仍然可以使用val intent = AccountPicker.newChooseAccountIntent 及之后:intent.putExtra("overrideTheme", 1) 并且它可以工作:)
  • 为什么是 'zza' 方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 2015-09-26
  • 2017-03-26
  • 2019-05-31
相关资源
最近更新 更多