我正在使用以下代码显示Google Play Services
的AccountPicker对话框:
String[] accountTypes = new String[]{"com.google"};
Intent intent = AccountPicker.newChooseAccountIntent(null, null,
accountTypes, false, null, null, null, null);
startActivityForResult(intent, REQUEST_CODE_PICK_ACCOUNT);
即使我使用带有Theme.AppCompat.Light
的AppCompat v21,它仍然显示为黑暗主题对话框。
是否可以设置对话框的样式?最好是Material dialog on Lollipop
,但至少要设置一个与我的应用匹配的简单对话框。
答案 0 :(得分:8)
我认为,不需要" hack"。它可以更容易实现:
...
String[] accountTypes = new String[]{GoogleAuthUtil.GOOGLE_ACCOUNT_TYPE};
Intent intent = AccountPicker.newChooseAccountIntent(null, null, accountTypes, false, description, null, null, null);
// set the style
if ( isItDarkTheme ) {
intent.putExtra("overrideTheme", 0);
} else {
intent.putExtra("overrideTheme", 1);
}
intent.putExtra("overrideCustomTheme", 0);
try {
startActivityForResult(intent, YOUR_REQUEST_CODE_PICK_ACCOUNT);
} catch (ActivityNotFoundException e) {
...
}
...
答案 1 :(得分:2)
我遇到了同样的问题,但我终于找到了解决方案。看一下 AccountPicker.class ,其中包括方法: newChooseAccountIntent()和 zza();
你必须改变
AccountPicker.newChooseAccountIntent(null, null,
accountTypes, false, null, null, null, null);
到
AccountPicker.zza(null, null,
accountTypes, false, null, null, null, null, false, 1, 0);
最后两个参数适用于" overrideTheme "和" overrideCustomTheme "。因此,将第一个设置为1,它将覆盖主题。 : - )
希望它有所帮助。
答案 2 :(得分:0)
我的解决方法是
Intent intent = AccountPicker.a(null, null,accountTypes, true, null, null, null, null, false, 1, 0);