Android : AccountPicker set Light Theme

2019-04-06 19:58发布

Is it possible to set the theme of picker dialog ?

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

My base app theme is android:Theme.Light but that dialog is dark. Thanks.

3条回答
Animai°情兽
2楼-- · 2019-04-06 20:29

you can change it when you overwrite over any args are defined in a parent class in method newChooseAccountIntent(Account var0, ArrayList<Account> var1, String[] var2, boolean var3, String var4, String var5, String[] var6, Bundle var7) {}

it is very simple to change it by adding it to your code...

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 means the Light Theme

0 means the Dark Theme

查看更多
兄弟一词,经得起流年.
3楼-- · 2019-04-06 20:37

When your Accountpicker is declared (I don't know much about AccountPicker) you can set the theme, but it could also be possible that it is this theme, cause it's by the system

EDIT: there's the reason

https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/values/themes.xml

but I think you could modify it :)

查看更多
虎瘦雄心在
4楼-- · 2019-04-06 20:47

If you wish to change the theme of the dialog, you should change the newChooseAccountIntent to zza and add two integer arguments. The first one is for overriding the theme and setting it to 1 will change the dialog theme to light.

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);
查看更多
登录 后发表回答