【发布时间】:2016-11-01 09:33:08
【问题描述】:
您可以为您的应用设置主题,但我想知道是否可以找出设备使用的主题。目前,我的应用使用Theme.AppCompat.Light。我想避免改变主题。
附:我已经尝试将其设置为 Theme.DeviceDefault 并使用反射访问其 ID,但到目前为止还没有运气。
try {
setTheme(android.R.style.Theme_DeviceDefault);
Class<Context> contextClass = Context.class;
Method getThemeMethod = contextClass.getMethod("getThemeResId");
getThemeMethod.setAccessible(true);
Log.d("Test", "" + getThemeMethod.invoke(this)); // Always returns 0
PackageInfo packageInfo = getPackageManager().getPackageInfo(getPackageName(), PackageManager.GET_META_DATA);
Log.d("Test", getResources().getResourceEntryName(packageInfo.applicationInfo.theme)); // Returns 'Theme.DeviceDefault'
} catch (Exception e) {
Log.d("Test", "exception", e);
}
【问题讨论】:
-
你是在问,如何使用设备集主题?
-
基本上是你的IDE选择的主题。如果你想避免你可以改变主题。
-
@Doomsknight 不,我不想使用设备默认主题。我想知道这个主题是深色还是浅色。
-
您使用的主题名称中有
.Light,肯定很轻。 -
@Doomsknight 你误会了。我想知道操作系统主题是浅色还是深色。我不需要更改我的应用主题。
标签: android android-theme