如何通过单击菜单项来更改布局?

时间:2013-07-16 12:41:38

标签: java android layout menu

我正在尝试让用户更改我的应用的布局。

这是我的XML:

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

<item
    android:id="@+id/menuTheme"
    android:orderInCategory="1"
    android:showAsAction="never"
    android:title="Theme">
    <menu>
        <item
            android:id="@+id/themeBlack"
            android:title="Black" />
        <item
            android:id="@+id/themeWhite"
            android:title="White" />
    </menu>
</item>

<item
    android:id="@+id/menuAbout"
    android:orderInCategory="1"
    android:showAsAction="never"
    android:title="About" />

以下是我的模拟器的屏幕截图: 这是我的菜单。

This is my menu.

单击菜单下的项目主题后,将显示此子菜单。 After clicking the item Theme under the menu, this submenu will appear

假设我想添加一个白色布局,我应该在哪里以及如何添加代码?我在res / layout文件夹中有一个名为themewhite.XML的XML文件。我试图在项目主题中添加一个开关,但它似乎不正确。

这是我的代码:

    @Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch(item.getItemId())
    {
        case R.id.menuTheme:
        {
            switch(item.getItemId())
            {
                case R.id.themeWhite;
                {
                    setContentView(R.layout.themewhite);
                }
            }
            break;
        }
        case R.id.menuAbout:
        {
            break;
        }
    }
    return super.onOptionsItemSelected(item);
}

1 个答案:

答案 0 :(得分:1)

我想你不想设置新的布局,你想要改变现有的可视化。

如果是这样,您应该使用您的活动主题进行操作。首先,您需要使用样式中的值创建主题(白色等)和十进制视图属性。然后在点击其中一个项目后在您的听众中,您应该通过调用
来更改您的主题 getContext().setTheme(resid)

这是一篇关于主题http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html

的好文章