以编程方式更改活动的主题, [英] Change Activity's theme programmatically

查看:233
本文介绍了以编程方式更改活动的主题,的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在特定的情况下,我需要从我的活动中删除对话框主题,但它似乎并不奏效。下面是一个例子

In particular cases I need to remove dialog theme from my activity but it doesn't seem to be working. Here's an example

第一项活动:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    startActivity(new Intent(MainActivity.this, SecondActivity.class));
}

第二项活动:

Second activity:

public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setTheme(android.R.style.Theme);
    setContentView(R.layout.activity_second);
}

清单节选:

 <activity android:name="SecondActivity" android:theme="@android:style/Theme.Dialog"></activity>

当我运行它的对话框里还是主题。

When I run it's still dialog themed.

API10

感谢。

推荐答案

作为<一个href="http://developer.android.com/reference/android/content/Context.html#setTheme%28int%29">docs说你有什么看法输出之前调用setTheme。看来,super.onCreate()参与视图处理。

As docs say you have to call setTheme before any view output. It seems that super.onCreate() takes part in view processing.

所以,主题之间切换动态,你只需要调用setTheme super.onCreate之前是这样的:

So, to switch between themes dynamically you simply need to call setTheme before super.onCreate like this:

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
}

这篇关于以编程方式更改活动的主题,的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆