[英]How to change application theme by choosing option from a listview or spinner in android?
每次单击项目时,所提及的内容都应应用于应用程序。
但是,当我在手机中运行该应用程序并选择一个选项时,主题不会改变,也不会显示吐司。
没有错误显示,并且应用程序也没有崩溃。 只是不起作用。
我愿意由一个微调器来做到这一点。 我该怎么办 ?
这是我的代码:
final ListView themeList = (ListView) findViewById(R.id.themeList);
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position == 0) {
getApplicaiton().setTheme(R.style.themeOne);
} else if (position == 1) {
getApplicaiton().setTheme(R.style.themeTwo);
} else if (position == 2) {
getApplicaiton().setTheme(R.style.themeThree);
} else {
Toast.makeText(ThemeActivity.this, "Something went wrong, please try again!", Toast.LENGTH_SHORT).show();
}
};
根据Android网站setTheme的文档
为此上下文设置基本主题。 请注意,应在Context中实例化任何视图之前(例如,在调用setContentView(View)或inflate(int,ViewGroup)之前)调用此方法。
因此,您需要在此之前进行更改。
在创建任何视图之前,必须调用setTheme
方法。 因此,要真正“改变”您的主题,您必须在调用setContentView
之前(甚至在sou调用super.onCreate
之前)重新创建活动并调用setTheme
。
另一个解决方案是不动态更改主题,而是动态更改元素本身(如acitonbar,notificationbar等)。 几乎所有可以设置为主题的属性也可以在Java代码中设置。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.