我想拥有与Chrome浏览器中相似的菜单项功能,就像它在图片中一样。我希望在一行中有后退,前进,刷新菜单项。如何实现类似的菜单项?是否有任何参考或是否有任何黑客来提供此功能?
我的应用仅适用于平板电脑。这是我当前的操作栏菜单项:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/favorite"
android:showAsAction="always"
android:title="Happy"/>
<item
android:id="@+id/share_button"
android:icon="@drawable/share"
android:showAsAction="always"
android:title="Share"/>
<item
android:id="@+id/hola_button"
android:showAsAction="always"
android:title="Hola"/>
<item
android:icon="@drawable/more_actions"
android:showAsAction="always">
<menu>
<item
android:id="@+id/back_button"
android:icon="@drawable/back"
android:title="back"/>
<item
android:id="@+id/forward_button"
android:icon="@drawable/forward"
android:title="forward"/>
<item
android:id="@+id/refresh_button"
android:icon="@drawable/refresh"
android:title="refresh"/>
</menu>
</item>
</menu>
答案 0 :(得分:1)
这看起来像是带有列表视图和自定义列表标题的自定义对话框
OR
简单布局下面的列表视图,对话框顶部有3个按钮。
您可以在操作栏菜单项上单击显示相同内容。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
getSupportMenuInflater().inflate(R.menu.menu_items, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.show_dlg:
// Show your custom dialog
break;
}
return super.onOptionsItemSelected(item);
}
此教程也可以作为扩展自定义菜单的参考 http://www.codeproject.com/Articles/173121/Android-Menus-My-Way
答案 1 :(得分:1)
修改强>
这个例子是一个OverflowMenu(因为ABS抛弃了溢出主题)。你可以膨胀任何类型的布局组合。此类从PopUpWindow扩展,不使用典型的onCreateOptions。它使用ABS-CustomView和PopUpWindow来创建菜单。
来自android引用:一个可用于显示任意视图的弹出窗口。弹出窗口是一个浮动容器,显示在当前活动的顶部。
布局看起来与您要求的布局类似。此视图锚定到ActionBar,但您可以在任何位置显示它。弹出窗口支持许多开箱即用的节目功能。
可自定义的OverflowMenu
public class OverflowMenu extends PopupWindow {
private View mContentView;
public OverflowMenu(Context context, int resourceId) {
super(context);
mContentView = LayoutInflater.from(context).inflate(resourceId, null);
setContentView(mContentView);
setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
// Handle touchevents
setOutsideTouchable(true);
setFocusable(true);
setBackgroundDrawable(new BitmapDrawable());
}
/**
* Attach the OverflowMenu View to the ActionBar's Right corner
* @param actionBarView
*/
public void show(View actionBarView) {
int x = actionBarView.getMeasuredWidth() - mContentView.getMeasuredWidth();
showAsDropDown(actionBarView, x, 0);
}
/**
* Return mContentView,
* used for mContentView.findViewById();
* @return
*/
public View getView(){
return mContentView;
}
}
<强> MainActivity 强>
public class MainActivity extends SherlockActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mai n);
final ActionBar actionBar = getSupportActionBar();
actionBar.setCustomView(R.layout.actionbar);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
final OverflowMenu menu = new OverflowMenu(this,R.layout.menu_overflow);
final ImageButton overflowBtn = (ImageButton) actionBar.getCustomView().findViewById(R.id.actionbar_overflow);
overflowBtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
menu.show(actionBar.getCustomView());
}
});
}
}
答案 2 :(得分:0)
您可以使用以下内容将菜单项添加到页面中:
OptionCommand command = new OptionCommand();
command.setActionView(view);
command.setIcon(canvas.getContext().getResources().getDrawable(android.R.drawable.ic_menu_search));
command.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
canvas.getActivity().getOptionCommands().add(command);