我正在开发平板android应用程序。这里我遇到了一个关于操作栏菜单项UI的问题。
注意:我使用的是android Native actionbar。
我尝试使用自定义布局,但没有显示项目的溢出菜单。我尝试使用PopupMenu作为溢出菜单,但图标在溢出列表中不可见
在这里,我使用了动作栏应用程序的样式,样式。xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionBarStyle">@style/AppTheme.ActionBar</item>
<item name="android:textAllCaps">false</item>
<item name="android:actionMenuTextAppearance">@style/AppTheme.ActionBar.MenuTextStyle</item>
<item name="android:actionOverflowButtonStyle">@style/OverFlow</item>
<item name="android:divider">@color/dividercolor</item>
</style>
<style name="OverFlow" parent="@android:style/Widget.Holo.ActionButton.Overflow">
<item name="android:src">@drawable/ic_actionbar_dots</item>
</style>
<style name="AppTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:background">@drawable/actionbar_background</item>
<item name="android:height">100dip</item>
<item name="android:titleTextStyle">@style/AppTheme.ActionBar.Text</item>
<item name="android:textColor">@color/white</item>
<item name="android:divider">@drawable/divider</item>
<item name="android:showDividers">beginning</item>
<item name="android:dividerPadding">10dp</item>
</style>
<style name="AppTheme.ActionBar.MenuTextStyle" parent="android:style/TextAppearance.Holo.Widget.ActionBar.Menu">
<item name="android:textAllCaps">false</item>
<item name="android:textColor">@color/white</item>
<item name="android:textSize">26sp</item>
</style>
<style name="AppTheme.ActionBar.Text" parent="@android:style/TextAppearance">
<item name="android:textAllCaps">false</item>
<item name="android:textColor">@color/white</item>
</style>
菜单xml
<group android:id="@+id/menu_mainGroup" >
<item
android:id="@+id/connection"
android:icon="@drawable/nw_pt_calc"
android:showAsAction="always"
android:title=" ">
</item>
<item
android:id="@+id/status_menu"
android:actionLayout="@layout/application_status_overflowmenu"
android:showAsAction="ifRoom|withText">
</item>
<!--
<item
android:id="@+id/status"
android:icon="@drawable/ic_available"
android:showAsAction="always"
>
<menu>
<item
android:id="@+id/status1"
android:icon="@drawable/ic_available"
android:showAsAction="always"
android:title="@string/menu_available">
</item>
<item
android:id="@+id/status2"
android:icon="@drawable/ic_busy"
android:showAsAction="always"
android:title="@string/menu_busy">
</item>
<item
android:id="@+id/status3"
android:icon="@drawable/ic_logoff"
android:showAsAction="always"
android:title="@string/menu_logoff">
</item>
</menu>
</item>
<item
android:id="@+id/display_pic"
android:icon="@drawable/ic_person"
android:showAsAction="always">
</item>
<item
android:id="@+id/display_name"
android:showAsAction="always">
</item>
-->
<item
android:id="@+id/menu_search"
android:icon="@drawable/ic_search"
android:showAsAction="always"
android:visible="false">
</item>
<item
android:id="@+id/help"
android:icon="@drawable/ic_help"
android:showAsAction="always"
android:visible="false">
</item>
<item
android:id="@+id/about"
android:showAsAction="never"
android:title="@string/about">
</item>
<!--
<item
android:id="@+id/notification_history"
android:showAsAction="never"
android:title="@string/notification_history">
</item>
<item
android:id="@+id/comm_msg_history"
android:showAsAction="never"
android:title="@string/comm_msg_history">
</item>
-->
</group>
帮助将不胜感激。感谢期待听到极客的答案:)。
我不知道你是否解决了你的问题。
首先,要在ActionBar中自定义分隔符,必须在主题中使用父节点ActionButton。你这样做:
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:divider">@color/dividercolor</item>
</style>
<style name="AppTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
<item name="android:divider">@drawable/divider</item>
</style>
试着这样做:
<style name="AppTheme" parent="@android:style/Theme.Holo.Light">
<item name="android:actionButtonStyle">@style/ActionButton</item>
<item name="android:actionBarDivider">@color/blue</item>
<item name="actionBarDivider">@color/blue</item>
</style>
<style name="ActionButton" parent="@android:style/Widget.Holo.Light.ActionButton">
<item name="android:background">@color/blue</item>
</style>
您可以在此处阅读解决方案:无法更改actionBar分隔符的颜色,而在此处:actionBar MenuItem分隔符。
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- first line vertical blue -->
<item android:left="1dp">
<shape android:shape="line">
<stroke
android:color="@color/blue"
android:width="1dp" />
</shape>
</item>
<!-- second line vertical white -->
<item android:right="1dp">
<shape android:shape="line">
<stroke
android:color="@color/white"
android:width="1dp" />
</shape>
</item>
</layer-list>
之后,您只需以样式声明它。xml
as:
现在您有了自定义分隔符(=
然后,在
ActionBar
中进行自定义布局。
ActionBar actionBar = getActionBar();
actionBar.setCustomView(R.layout.application_status_overflowmenu);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM|
ActionBar.DISPLAY_SHOW_HOME);
和
application\u status\u overflow菜单。xml将类似于:
<RelativeLayout
android="@+id/theCustomIcon"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:layout_gravity="right" android:gravity="center"
android:paddingLeft="10dp" android:paddingRight="10dp"
android:clickable="true" >
<ImageView
android:id="@+id/blockCustomIcon"
android:layout_width="50dp" android:layout_height="50dp"
android:src="@drawable/green_block"
android:layout_centerVertical="true"
android:layout_alignParentLeft="true" />
<ImageView
android:id="@+id/imgCustomIcon"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/green_block"
android:layout_centerVertical="true"
android:layout_toRightOf="@id/blockCustomIcon" />
<TextView
android:id="@+id/txtCustomIcon"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/green_block"
android:layout_centerVertical="true"
android:layout_alignParentRight="true"
android:gravity="left" />
</RelativeLayout>
最后,您可以访问
View
来更新项目:
TextView text = (TextView) actionBar.getCustomView().findViewById(R.id.txtCustomIcon);
text.setText("Emily Nichols");
这就是全部!
如果您的菜单选项消失,请检查您的onCreateOptionsMenu
是否膨胀了一个良好的布局,并且是否返回true。您还可以在选项菜单前面添加自定义项或动态添加项。
我希望这将是有用的,它也会有帮助。
大家好,我正在开发示例Android应用程序,我正在其中尝试在actionbar中显示菜单项。但我的操作栏总是显示溢出菜单,即使只有一个菜单项。它没有在操作栏中显示我的菜单项图像。我以以下方式实施了这一点 我做错什么了吗?我需要一些帮助。非常感谢。
我有一个带有MenuItem的操作条。如何隐藏/显示该菜单项? 这就是我要做的:
问题内容: 我想在Honeycomb ActionBar中添加一个不确定的进度条,以便用户每次按下“刷新”时,刷新图标都会临时变为不确定的进度条,直到任务完成。电子邮件应用程序已经做到了,但是我不知道如何做到。 有什么建议吗? 问题答案: 很难确切说明电子邮件应用程序是如何完成的,但是您可能想保持简单,只需用XML文件的ID 调用setIcon,然后使用Timer更改状态即可。
我在操作栏(实际上是工具栏)中有一个菜单项,单击该菜单项时,会显示一个可供选择的项目列表,类似于单选按钮: 我需要在这个项目列表下面放一个项目,在它和列表之间有一个分隔符。与材料设计指南所示类似(摘自此处): 编辑:下面是我想做的事情的草图: 我找不到办法。 我找到的唯一可能的解决方案是: > 更改活动主题(此处),但这也会影响活动的其他菜单项 方法,当菜单项出现在操作栏上时,在它们之间放置分隔符
在程序菜单或上下文菜单中插入新的菜单项 进程: 主进程 您可以在 Menu末尾查看示例. new MenuItem(options) options Object click Function (可选) - 单击菜单项被调用 click(menuItem,browserWindow) menuItem MenuItem browserWindow BrowserWindow event Even
菜单项 添加菜单项到应用程序菜单和上下文菜单中 进程:主进程 有关示例, 请参见 Menu。 Class: MenuItem Add items to native application menus and context menus. Process: Main See Menu for examples. new MenuItem(可选) 参数 Object click Function (