【问题标题】:How do i set my menu buttons location如何设置我的菜单按钮位置
【发布时间】:2013-06-15 08:55:29
【问题描述】:

所以我想做的就是让我们都知道的那个菜单按钮显示在右上角。

当我在网上搜索时,我发现操作栏 Sherlock 有点适合我的需求。

正如您从他的图片中看到的那样,我使用的代码在我的设计中添加了深蓝色部分(我使用我出色的绘画技巧在红色矩形中说明的那个部分),我想要那个按钮是绿色圆圈,放置在绿色箭头(好电影:D)所指的区域。

我用来显示这个的唯一代码如下,它取自 Sherlock 演示:

ActionMode mMode;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    mMode = startActionMode(new AnActionModeOfEpicProportions());

}

private final class AnActionModeOfEpicProportions implements ActionMode.Callback {
        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            //Used to put dark icons on light action bar
     //       boolean isLight = SampleList.THEME == R.style.Theme_Sherlock_Light;

            menu.add("Feedback")
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

            menu.add("Share")
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

            menu.add("Preferences")
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

            menu.add("Refresh")
                .setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);

            return true;
        }

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            Toast.makeText(AndroidMenu.this, "Got click: " + item, Toast.LENGTH_SHORT).show();
            mode.finish();
            return true;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
        }
    }

我似乎无法弄清楚该设计的来源(可能是 Sherlock 框架),以及如何按我的意愿修改它...

各位有什么想法吗?

编辑:

我找到的答案是为我的目标使用不同的 Sherlock 样本:

public class SubMenus extends SherlockActivity {
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        SubMenu subMenu1 = menu.addSubMenu("Action Item");
        subMenu1.add("Sample");
        subMenu1.add("Menu");
        subMenu1.add("Items");

        MenuItem subMenu1Item = subMenu1.getItem();
        subMenu1Item.setIcon(R.drawable.ic_title_share_default);
        subMenu1Item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        SubMenu subMenu2 = menu.addSubMenu("Overflow Item");
        subMenu2.add("These");
        subMenu2.add("Are");
        subMenu2.add("Sample");
        subMenu2.add("Items");

        MenuItem subMenu2Item = subMenu2.getItem();
        subMenu2Item.setIcon(R.drawable.ic_compose);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setTheme(SampleList.THEME); //Used for theme switching in samples
        super.onCreate(savedInstanceState);
        setContentView(R.layout.text);
        ((TextView)findViewById(R.id.text)).setText(R.string.submenus_content);
    }

【问题讨论】:

  • 就像您无法更改旧版本菜单以从上方显示一样,我从未听说过更改该菜单按钮的位置。顺便说一句 +1,我们将一起等待更好的答案:)
  • @Rob013 好的,但我想要的是能够在红色矩形中设置该区域的样式(设计来自sherlock)。例如,我想从左侧删除该复选标记,并将该文本改为“Previous Orders”。

标签: android menu actionbarsherlock android-actionbar


【解决方案1】:

个性化此类对象的最佳方法是在它们上设置自定义视图。也许您可以扩展一个自定义布局,该布局在右侧提供一个 TextView 和一个 Button,而左侧没有“完成”标记。

这是来自this的sn-p代码

 LayoutInflater inflater = LayoutInflater.from(getSherlockActivity());
 View actionView = inflater.inflate(R.layout.actionmode, null);

 ActionMode am = getSherlockActivity().startActionMode(mActionModeCallback);
 am.setCustomView(actionView);

【讨论】:

  • 不幸的是,我无法使您的解决方案发挥作用...无论如何,我尝试了一种不同的方法来制作菜单按钮,并使用了 Android Sherlock 的另一个示例。(正如您在我编辑的初始帖子)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-03
  • 1970-01-01
相关资源
最近更新 更多