`
oraclestudy
  • 浏览: 481187 次
文章分类
社区版块
存档分类

AndroidGUI11:OptionsMenu的常用技巧

 
阅读更多

<!-- [if !mso]> <style> v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!-- [if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:RelyOnVML/> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting/> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-font-kerning:1.0pt;} </style> <![endif]-->

Menu 有几种形式:

1. Context Menu Context Menu 的菜单项 (Menu Item) 不支持快捷键,也不支持图标。

2. Option Menu 包含两种 Menu Icon Menu Expanded Menu Icon Menu 的菜单项 (Menu Item) 是唯一支持 Icon Menu Item ,也是唯一不支持 CheckBox Radio 按钮的 Menu Item Expanded Menu 是一个竖直列表,当用户点击 Icon Menu 中的 “more” 菜单项时弹出。 “More” 菜单项,仅在 Icon Menu 菜单项超过 6 个时才会出现。

3. Sub Menu 本身支持 icon ,但 Sub Menu 的菜单项 (Menu Item) 不支持 icon Sub Menu 也不支持嵌套的 Sub Menu

本文仅讨论上面的 2 3 两种情况。 Context Menu 将在另外一篇文章中讨论。

1. 首先将本项目要用到的一些图标资源,放入到 res/drawable-mdpi 文件夹下。

它们的文件名分别为:

cn.png uk.png us.png au.png ch.png

它们的文件名分别为:

basketball.png tableball.png usfootball.png volleyball.png boxing.png compass.png football.png golf.png iceskate.png

图片资源放到 res/drawable-mdpi 文件夹后,系统会自动为它们生成对应的 ID 号,比如为 cn.png 生成的 ID R.drawable.cn

2. 创建两个 Activity ,点击某些菜单项时会将界面分别跳转到这两个 Activity

第一个 Activity 代码:

public class Countries extends Activity

{

@Override

protected void onCreate(Bundle savedInstanceState)

{

super .onCreate(savedInstanceState);

setContentView(R.layout. countries );

}

}

第一个 Activity 对应的布局文件 countries.xml

<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout

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

android:orientation = "vertical"

android:layout_width = "fill_parent"

android:layout_height = "fill_parent" >

< ImageButton

android:id = "@+id/image_button1"

android:layout_width = "wrap_content"

android:layout_height = "wrap_content"

android:src = "@drawable/cn"

/>

< ImageButton

android:id = "@+id/image_button2"

android:layout_width = "wrap_content"

android:layout_height = "wrap_content"

android:src = "@drawable/uk"

/>

< ImageButton

android:id = "@+id/image_button3"

android:layout_width = "wrap_content"

android:layout_height = "wrap_content"

android:src = "@drawable/us"

/>

< ImageButton

android:id = "@+id/image_button4"

android:layout_width = "wrap_content"

android:layout_height = "wrap_content"

android:src = "@drawable/au"

/>

< ImageButton

android:id = "@+id/image_button5"

android:layout_width = "wrap_content"

android:layout_height = "wrap_content"

android:src = "@drawable/ch"

/>

</ LinearLayout >

第二个 Activity 代码:

public class Anything extends Activity

{

@Override

protected void onCreate(Bundle savedInstanceState)

{

super .onCreate(savedInstanceState);

setContentView(R.layout. anything );

}

}

第二个 Activity 所对应的布局文件 anything.xml

<? xml version = "1.0" encoding = "utf-8" ?>

< LinearLayout

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

android:layout_width = "wrap_content"

android:layout_height = "wrap_content" >

< TextView

android:layout_width = "wrap_content"

android:layout_height = "wrap_content"

android:textColor = "#FFFF00"

android:textSize = "30sp"

android:text = "Hello, Android!"

/>

</ LinearLayout >

3. AndroidManifest.xml 中,增加上述两个 Activity 的描述,否则当界面要跳转到它们时,系统会给出找不到 Activity 的警告。在 AndroidManifest.xml 中,在 Application 标签内,增加如下代码:

< activity android:name = ".Countries"

android:label = " 国家 " >

</ activity >

< activity android:name = ".Anything"

android:label = " 随便的信息 " >

</ activity >

4. 所需要的各种代码和素材都已经准备好了,下面主 Activity 的代码 ( 它所对应的布局文件,就用缺省的 main.xml 好了,这个无关紧要 )

public class ControlMenu extends Activity

implements

OnMenuItemClickListener

{

private static final int MAIN_GROUP = 0;

private static final int GENDER_GROUP = 1;

private static final int SPORTS_GROUP = 2;

private static final int GENDER_GROUP_MALE = 3;

private static final int GENDER_GROUP_FEMALE = 4;

private static final int SPORTS_GROUP_BASKETBALL = 5;

private static final int SPORTS_GROUP_ICESKATE = 6;

private static final int SPORTS_GROUP_VOLLEYBALL = 7;

private static final int SPORTS_GROUP_BOXING = 8;

private static final int MENU_GENDER = 9;

@Override

public void onCreate(Bundle savedInstanceState)

{

super .onCreate(savedInstanceState);

setContentView(R.layout. main );

}

@Override

public boolean onCreateOptionsMenu(Menu menu)

{

super .onCreateOptionsMenu(menu);

// Menu 可以增加 MenuItem 很显然 menu_countries 是一个 Icon Menu Item

MenuItem menu_countries = menu.add( " 国籍 " );

// 设定 menu_countries 的图标

menu_countries.setIcon(R.drawable. cn );

// menu_countries 这个菜单项被点击后 就会跳转到 Intent 对象中第二个参数所指定的 Activity

menu_countries.setIntent( new Intent( this , Countries. class ));

// =========================================================

// Menu 可以增加 SubMenu SubMenu 可以认为是 Menu 的菜单项

SubMenu subMenuSports = menu.addSubMenu( " 体育 " );

// SubMenu 本身可以有 icon SubMenu 的菜单项 则不支持 icon

subMenuSports.setIcon(R.drawable. tableball );

// 设定 SubMenu HeaderIcon

subMenuSports.setHeaderIcon(R.drawable. usfootball );

// SubMenu 可以增加 MenuItem( SubMenu 的菜单项 )

// public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title)

// add 的第 3 个参数决定菜单项的先后顺序,越小排位越靠前,如果不关心菜单项的排列顺序,

// 可以让这个参数为 Menu.NONE( 0)

MenuItem menu_basketball = subMenuSports.add( SPORTS_GROUP , SPORTS_GROUP_BASKETBALL , Menu. NONE , " 篮球 " );

MenuItem menu_volleyball = subMenuSports.add( SPORTS_GROUP , SPORTS_GROUP_VOLLEYBALL , Menu. NONE , " 排球 " );

MenuItem menu_iceskate = subMenuSports.add( SPORTS_GROUP , SPORTS_GROUP_ICESKATE , Menu. NONE , " 滑冰 " );

MenuItem menu_boxing = subMenuSports.add( SPORTS_GROUP , SPORTS_GROUP_BOXING , Menu. NONE , " 拳击 " );

// setGroupCheckable 的第 2 个参数 表示整个菜单组里面的菜单项是否可以 checkable

// setGroupCheckable 的第 3 个参数 表示菜单项的选择是否为 exclusive

// 如果是 true 则表明是 exclusive 即排他的 也就是每个菜单项是以单选按钮的形式出现的

// 如果是 false 则表明是非 exclusive 即可以多选 也就是每个菜单项是以 checkbox 的形式出现的

subMenuSports.setGroupCheckable( SPORTS_GROUP , true , false );

menu_basketball.setChecked( true );

//menu_basketball.setIcon(R.drawable.basketball); // SubMenu 的菜单项 即使设置了 Icon 也不会显示

menu_basketball.setOnMenuItemClickListener( this );

menu_volleyball.setChecked( true );

//menu_volleyball.setIcon(R.drawable.volleyball); // SubMenu 的菜单项 即使设置了 Icon 也不会显示

menu_volleyball.setOnMenuItemClickListener( this );

menu_iceskate.setChecked( false );

//menu_iceskate.setIcon(R.drawable.iceskate); // SubMenu 的菜单项 即使设置了 Icon 也不会显示

menu_iceskate.setOnMenuItemClickListener( this );

menu_boxing.setChecked( false );

//menu_boxing.setIcon(R.drawable.boxing); // SubMenu 的菜单项 即使设置了 Icon 也不会显示

menu_boxing.setOnMenuItemClickListener( this );

// ===========================================================================================

MenuItem menu_anything = menu.add( " 爱好 " );

menu_anything.setIcon(R.drawable. boxing );

menu_anything.setIntent( new Intent( this , Anything. class ));

// 设置快捷键

menu_anything.setAlphabeticShortcut( 'H' );

// ===========================================================================================

SubMenu subMenuGender = menu.addSubMenu( MAIN_GROUP , MENU_GENDER , 0, " 性别 " );

subMenuGender.setIcon(R.drawable. us );

subMenuGender.setHeaderIcon(R.drawable. us );

// add 的第 3 个参数决定菜单项的先后顺序,越小排位越靠前,如果不关心菜单项的排列顺序,

// 可以让这个参数为 Menu.NONE( 0) ,下面的代码是会 " " 菜单项在 " " 菜单项之前。

MenuItem male = subMenuGender.add( GENDER_GROUP , GENDER_GROUP_MALE , 2, " " );

male.setChecked( true );

male.setOnMenuItemClickListener( this );

MenuItem female = subMenuGender.add( GENDER_GROUP , GENDER_GROUP_FEMALE , 1, " " );

female.setChecked( false );

female.setOnMenuItemClickListener( this );

// setGroupCheckable 的第 2 个参数 表示整个菜单组里面的菜单项是否可以 checkable

// setGroupCheckable 的第 3 个参数 表示菜单项的选择是否为 exclusive

// 如果是 true ,则表明是 exclusive 的,即排他的,也就是每个菜单项是以单选按钮的形式出现的

subMenuGender.setGroupCheckable( GENDER_GROUP , true , true );

// ============================================================================================

// 定义一个 Icon Menu Item( 该菜单项不处理任何事件 仅为了让 Icon Menu Item 超过 6 从而出现 “More”)

MenuItem menu_anything3 = menu.add( " 学位 " );

menu_anything3.setIcon(R.drawable. iceskate );

// ============================================================================================

// 定义一个 Icon Menu Item( 该菜单项不处理任何事件 仅为了让 Icon Menu Item 超过 6 从而出现 “More”)

MenuItem menu_anything4 = menu.add( " 语言 " ); // 前面 5 Icon MenuItem 加上 More 因此 Icon MenuItem 会超过 6

menu_anything4.setIcon(R.drawable. hk ); // 所以 menu_anything4 会变成 Expanded Menu 也就是说 给它设置

// 图标是没有意义的

// ============================================================================================

MenuItem menu_anything5 = menu.add( " 才艺 " ); // 也会变成 Expanded Menu

menu_anything5.setIcon(R.drawable. compass ); // 设置图标是没有意义的

menu_anything5.setIntent( new Intent( this , Anything. class )); // 跳转到 Anything 这个 Activity

return true ;

}

// OnMenuItemClickListener 接口要求我们实现 onMenuItemClick 方法

public boolean onMenuItemClick(MenuItem item)

{

// 功能示例

// 如果 item checked 状态 那么点击它以后 就会变成 unchecked 状态。反之亦然。

if (item.isChecked())

{

item.setChecked( false );

}

if (!item.isChecked())

{

item.setChecked( true );

}

return true ;

}

// 重写 Activity 中的 onOptionsItemSelected 方法

@Override

public boolean onOptionsItemSelected(MenuItem item)

{

String str = "" ;

// 如果点击的是体育这个菜单项

if (item.getTitle() == " 体育 " )

{

// 检查各菜单项被选中的情况:

if (item.getSubMenu().findItem( SPORTS_GROUP_BASKETBALL ).isChecked()) str += " 篮球 " ;

if (item.getSubMenu().findItem( SPORTS_GROUP_VOLLEYBALL ).isChecked()) str += " 排球 " ;

if (item.getSubMenu().findItem( SPORTS_GROUP_ICESKATE ).isChecked()) str += " 滑冰 " ;

if (item.getSubMenu().findItem( SPORTS_GROUP_BOXING ).isChecked()) str += " 拳击 " ;

// Toast checked 的选项显示出来

Toast.makeText ( this , str, Toast. LENGTH_SHORT ).show();

}

return super .onOptionsItemSelected(item);

}

}

运行结果:

a) 点击模拟器上的 menu 按钮


b) 点击 More


从上面可以看到,尽管我们给“语言”和“才艺”这两个菜单项,在代码中增加了 Icon ,但在这里是看不到的。也就是说 Expanded Menu Item 是不支持 Icon 的。

c) a) 中点击“国籍”菜单项,将会切换到 Activity Countries 所拥有的界面,如下:


d) a) 中点击“体育”菜单项 ( 其实是一个 SubMenu) ,得到:


因为 subMenuSports.setGroupCheckable(SPORTS_GROUP , true , false ); 中的最后一个参数是 false ,所以显示的菜单项是 Checkbox 形式

e) a) 中点击“爱好”菜单项,将会切换到 Activity Anything 所拥有的界面,如下:


在代码中,我们以 menu_anything.setAlphabeticShortcut('H'); 形式为“爱好”菜单项添加了快捷键,因此,只要点击键盘上的“ h ”键,也会出现上述界面。这个特点在带有键盘的手机上应该比较有用,在没有键盘的手机上 ( 用软键盘 ) ,尽管也可以起作用,但用处不大。

f) a) 中点击“性别”菜单项 ( 其实是个 SubMenu) ,得到:


因为 subMenuGender.setGroupCheckable(GENDER_GROUP , true , true ); 中的最后一个参数是 true ,所以菜单项显示的是 Radio 的形式。

请注意,代码中的 Order 对菜单项显示顺序的影响。

g) “学位”菜单项,我们没有添加相应的代码,因此点击它,不会有什么响应。

h) 点击“ More ”会得到 b) 中所示的 Expanded Menu Item ,点击其中的“语言”菜单项,什么也不会发生,因为我们没有为这个菜单项增加对应的代码。

i) 点击“才艺”,和在 a) 中点击“爱好”菜单项一样,将会切换到 Activity Anything 所拥有的界面。

分享到:
评论

相关推荐

    OptionsMenu选项菜单使用Demo

    OptionsMenu的简单使用,http://blog.csdn.net/fang410103/article/details/78110175

    android optionsMenu

    this is the android optionsmenu sample tested under android4.2.

    android创建optionsmenu的方法

    主要介绍了android创建optionsmenu的方法,实例分析了Android菜单项的设置与创建技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    android OptionsMenu--利用xml实现源码

    该代码展示了Android的选项菜单怎么用xml去实现 个人认为这种方式写optionsMenu菜单比较好,代码清晰 不需要去类里面定义那么多变量, 这里提供的是一个这样一个小功能的代码,给初学者使用的一个模块,高手请勿喷

    Android---UI篇---Menu(菜单)

    Android---UI篇---Menu(菜单), Android系统里面有3种类型的菜单:options menu,context menu,sub menu。

    解决vue axios跨域 Request Method: OPTIONS问题(预检请求)

    我们在vue开发中用axios进行跨域请求时有时会遇到,同一个接口请求了两次,并且第一次都是options请求,然后才是post/get请求 如下图 options请求 get请求 为什么会出现这种原因呢? 这是因为CORS跨域分为 简单...

    SourceInsight4自编黑色主题

    下载该文件后,导入方法:Options-&gt;Style properties-&gt;Load,选择该文件即可。 下载该文件后,导入方法:Options-&gt;Style properties-&gt;Load,选择该文件即可。 下载该文件后,导入方法:Options-&gt;Style properties-&gt;...

    android-options-menu.7z

    android-options-menu.7z

    Android开发之menu菜单

    Android系统里面有四种类型的菜单:options menu(选项菜单),context menu(上下文菜单),sub menu(子菜单),Popup menu(弹出菜单)。 首先说 选项菜单(OptionsMenu) 一、方法介绍:  public ...

    A0239使用菜单OptionsMenu1

    1.选项菜单(optinosMenu) 2.上下文菜单(ContextMenu) 3.子菜单(subMenu)其中最常用的就是选项菜单(optionsMenu)

    Android中实现ContentResolver对系统中所有联系人的访问

    一、实现方法 ...还有要想实现长按联系人姓名会弹出菜单显示,在Android的菜单分两种:options menu 、context menu 。(也有分三种的:options menu 、context menu、sub menu)其中options menu是和Activity相

    OptionsMenu:材质设计样式弹出框选项菜单

    OptionsMenu是一个基于Swift编写的库,它基于Android材质设计中的选项菜单,可让您通过在导航栏的右侧添加栏按钮项来轻松地向导航栏添加菜单,然后让您打开并关闭菜单。 OptionsMenu是一个弹出式菜单,它的设置就像...

    OptionsMenu_QIQI.rar_android

    android的上传下载功能,菜单使用,完整的例子,适合初学者

    javascrip 分頁組件

    this.nowPage = typeof(options.nowPage)=="undefined" ? "nowPage" : options.nowPage; this.page_pageNo = typeof(options.page_pageNo)=="undefined" ? "page_pageNo" : options.page_pageNo; this.page_...

    sourceinsight设置风格

    (1)字体:options &gt; document options &gt; screen fonts 设置为 consolas 10 (2)字体颜色:options &gt; preferences &gt; colors &gt; Default text 颜色设置为 RGB(248 248 242) (3)背景颜色:options...

    眼底血管分割 Matlab 程序.zip

    项目流程主要分为两部分:预处理、分割提取。预处理的任务是滤除噪声、增强图像对比度及增强血管边缘,以便后续处理,包括:中值滤波、CLAHE、同态滤波。分割提取的任务是处理经过预处理的眼底图像,提取分割出血管...

    build-unity-android-plugin::wrench:无需安装Android项目即可为Unity构建Android插件

    build-unity-android-plugin :wrench: 无需安装Android项目即可为Unity构建Android插件。安装$ brew tap neogeek/build-unity-android-plugin$ brew install build-unity-android-plugin用法build-unity-android-...

    Android UI Fundamentals: Develop & Design (Develop and Design)

    Jason discusses the proper way of adding interaction through gestures and the advanced graphical options available using Canvas, Renderscript and OpenGL. Finally, he discusses tablet development, the...

    Android多种菜单样式的代码例子

    Android多种菜单样式的代码例子。用于演示选项菜单OptionsMenu、上下文菜单ContextMenu,以及使用弹窗控件PopupWindow来自定义菜单的功能。

Global site tag (gtag.js) - Google Analytics