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

标签 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);
}

最佳答案

我猜您不想设置新布局,您只想更改现有布局的可视化。

如果是这样,您应该调整 Activity 的主题。首先,您需要使用样式中的值创建主题(白色等)和贴花 View 属性。然后在您的监听器中单击其中一项后,您应该通过调用
更改您的主题 getContext().setTheme(resid)

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

关于java - 如何通过单击菜单项来更改布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17676807/

相关文章:

Java 返回错误的图像类型

android - Android 4.0 中的蓝牙智能 (4.0)/GATT 支持?

wpf - 在 WPF 中保留 ListView 列布局的最佳实践

java - 向现有文件添加新属性

java - JavaFX 中带抽屉的可调整大小的 BorderPane

java - Spring 无法 Autowiring Map bean

java - 哪种方法更好,以便能够将包装类 read()/write() 方法与 android.content.res.Resources.openRawResource() 方法一起使用?

android - 如何从 .apk 文件中提取 java 文件

qt - 在pyqt中设置布局边距

Android:在同一 Activity 中更改布局