2013-07-16 4 views
0

Я пытаюсь разрешить пользователям изменять макет моих приложений.Как изменить макет, нажав на пункты меню?

Это мой 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

Скажем, я хочу добавить белый макет, где и как мне добавить коды? У меня есть XML-файл с именем themewhite.XML в папке res/layout. Я попытался добавить переключатель в тему темы, но это не кажется правильным.

Это мой код:

@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

Я думаю, вы не хотите, чтобы установить новую компоновку, вы хотите изменить только визуализацию существующих.

Если это так, вы должны манипулировать темами своей деятельности. Для начала вам нужно создать темы (белые и т. Д.) И атрибуты decalre, используя значения из стиля. И тогда в вашем слушателе после выберите один из пунктов, вы должны изменить вашу тему по телефону
getContext().setTheme(resid)

Вот хорошая статья о темах http://www.androidengineer.com/2010/06/using-themes-in-android-applications.html

Смежные вопросы