更改Google Play服务AccountPicker对话框的样式

时间:2015-01-30 14:16:47

标签: android dialog material-design

我正在使用以下代码显示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,但至少要设置一个与我的应用匹配的简单对话框。

3 个答案:

答案 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);