【问题标题】:How to change theme in android programatically如何以编程方式更改android中的主题
【发布时间】:2014-07-30 15:12:38
【问题描述】:

我正在为 Actionbar 使用 actionbarsherlock,这里默认设置一个主题。扩展搜索视图后,我需要更改操作栏的主题,如下所示

@Override
public boolean onMenuItemActionExpand(MenuItem item) {
    // TODO Auto-generated method stub
    setTheme(R.style.CalendarTheme);
    return true;
}

新主题没有得到反映,我在 Manifest 文件中的其他活动中使用的相同主题,它运行良好。如何在android中动态改变主题?

【问题讨论】:

  • 这是不可能的。您可以在调用setContentView()之前在onCreate()中设置setTheme()的主题,但之后无法再次更改。
  • 不重启活动/应用程序

标签: android android-activity android-actionbar android-search


【解决方案1】:

在实例化任何视图后,您无法更改 Activity 的主题。

来自setTheme(int) documentation

请注意,这应该在上下文中实例化任何视图之前调用(例如,在调用 setContentView(View)inflate(int, ViewGroup)) 之前。

您可以手动更改视图的样式,但不能更改主题。

【讨论】:

  • 哦,在我的例子中,向上导航图标只有 3 个小节,这表明它是一个滑动菜单。但是当我的搜索范围扩大时,我需要用它来替换箭头。怎么做?
  • 为了快速解决问题,您可以在更改主题后重新启动活动:protected void restartActivity() { Intent intent = getIntent();结束();开始活动(意图); }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-30
  • 2012-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多