2011-01-12 2 views
0

I Submenüs haben:Stellen Sie eine Schriftart eines MenuItem

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     SubMenu subMenuFile = menu.addSubMenu("Font type"); 

     SubMenu subMenuEdit = menu.addSubMenu("Font size"); 
     subMenuEdit.add(Menu.NONE, IDM_FONT_SIZE, Menu.NONE, "Change size of font"); 

     return super.onCreateOptionsMenu(menu); 
    } 

Ich will ihre Schrift setzen. Kann ich es schaffen? Die Datei Menu.XML unterstützt das Attribut android nicht: typeface = "serif". Der Compiler sagt: „Fehler: String-Typen nicht erlaubt (bei‚Schrift‘mit dem Wert‚Arial‘)“ Dann habe ich dies getan haben:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     SubMenu subMenuFile = menu.addSubMenu("Font type"); 

     for(int i = 0; i < fontFaces.length; ++i) { 
     subMenuFile.add(Menu.NONE, IDM_FONT_TYPE, Menu.NONE, Html.fromHtml("<b>html</b>")); 
     } 

     SubMenu subMenuEdit = menu.addSubMenu("Font size"); 
     subMenuEdit.add(Menu.NONE, IDM_FONT_SIZE, Menu.NONE, "Change size of font"); 

     return super.onCreateOptionsMenu(menu); 
    } 

Ich habe gesehen, dass das Untermenü verschiedene Stile unterstützt, aber die Anwendung endet mit einem Fehler. Hier ist das Protokoll:

01-12 10:04:18.103: ERROR/AndroidRuntime(1078): FATAL EXCEPTION: main 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078): java.lang.IllegalArgumentException: Invalid payload item type 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.util.EventLog.writeEvent(Native Method) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.app.Activity.onMenuItemSelected(Activity.java:2204) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:748) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:143) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:855) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:137) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:873) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.widget.AdapterView.performItemClick(AdapterView.java:284) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.widget.ListView.performItemClick(ListView.java:3513) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.widget.AbsListView$PerformClick.run(AbsListView.java:1800) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.os.Handler.handleCallback(Handler.java:587) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.os.Handler.dispatchMessage(Handler.java:92) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.os.Looper.loop(Looper.java:123) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at java.lang.reflect.Method.invoke(Method.java:507) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
01-12 10:04:18.103: ERROR/AndroidRuntime(1078):  at dalvik.system.NativeStart.main(Native Method) 
01-12 10:04:22.393: ERROR/InputDispatcher(67): channel '406c4fb8 android.htmleditor/android.htmleditor.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x8 
01-12 10:04:22.393: ERROR/InputDispatcher(67): channel '406c4fb8 android.htmleditor/android.htmleditor.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! 
01-12 10:04:23.263: ERROR/InputDispatcher(67): Received spurious receive callback for unknown input channel. fd=175, events=0x8 

Wie kann ich eine Schriftart eines MenuItem festlegen?

+0

ich glaube nicht, dass es eine Methode gibt, um Schriftart Stil wie Sie in Code –

Antwort

4

Sie können den Stil eines Menüelements nicht ändern. Sie können nur den Text und das Menüsymbol eines Menüeintrags ändern. Wenn Sie das Aussehen ändern möchten, müssen Sie eine neue benutzerdefinierte Implementierung erstellen.

Für den Anfang, ich werde vorschlagen, überschreiben Sie die Menü-Taste und zeigen Sie Ihre eigene benutzerdefinierte Ansicht anstelle von Standard-Android-Menü.

-2

dynamisch setTypeface(Typeface.MONOSPACE); durch setTypeface() Methode können wir den Schriftstil für die Ansichten festlegen.

+4

wo sehen Sie sehen? Ich habe MENUITEM! Es ist keine Unterklasse der Klasse View! Schau: http://developer.android.com/reference/android/view/View.html. Versuchen Sie, dort das Unterklassenmenü zu finden – user565447

Verwandte Themen