我知道這個問題被問了幾次。但我不能在我的情況下找到問題。 我想改變應用程序的主題,但我的colorPrimary,colorAccent等不會改變。setTheme不改變主題顏色
我的MainActivity擴展了BasicActivity。它看起來像這樣:
public class MainActivity extends BasicActivity {
public static String MY_PREFS = "MY_PREFS";
private SharedPreferences mySharedPreferences;
int prefMode = Activity.MODE_PRIVATE;
private Toolbar toolbar;
private TabLayout tabLayout;
private ViewPager viewPager;
private ViewPagerAdapter adapter;
private TextView tabOne, tabTwo, tabThree;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
這是我BasicActivity(在這種情況下,我把它更簡單,以表明該主題是從R.style取):
public class BasicActivity extends AppCompatActivity {
public static String MY_PREFS = "MY_PREFS";
int prefMode = Activity.MODE_PRIVATE;
protected void onCreate(Bundle savedInstanceState) {
JsonParser parser = new JsonParser(getApplicationContext());
int resourceId = this.getResources().getIdentifier(parser.getThemeID(), "style", this.getPackageName());
setTheme(R.style.c_2ecc71_BC6C2B);
if (android.os.Build.VERSION.SDK_INT >= 19) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
super.onCreate(savedInstanceState);
}
}
和我的XML:
<style name="c_2ecc71_BC6C2B" parent="@style/Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#2ecc71</item>
<item name="colorPrimaryDark">#1ebc61</item>
<item name="colorAccent">#BC6C2B</item>
</style>
根據前面的問題,此代碼應工作,但在我的情況有colorPrimary在其XML的觀點仍在加載老主題的顏色insted的,即使我設置了主題befo新一重新打電話setContentView(R.layout.activity_main);
謝謝!
你硬編碼的主題BaseActivity值,比獲取引用資源ID。你需要把setTheme(value_from_resourceId); BaseActivity總是調用setTheme(R.style.c_2ecc71_BC6C2B); 比運行時間值 – Stallion