标签: menuitem

在膨胀布局以用于MenuItem的ActionView时,我应该为root传递什么?

我有一个ImageView我附加到MenuItemActionView(项目出现在ActionBar).此视图的布局来自XML.我这样膨胀它:

ImageView actionView = (ImageView) layoutInflater.inflate(
   R.layout.action_view_layout, null);
Run Code Online (Sandbox Code Playgroud)

这似乎工作正常.然而; root在调用中传递null inflate()使Lint对我大喊:

避免将null作为视图根传递(需要解析膨胀布局的根元素上的布局参数)

在我的具体情况下,我似乎可以在没有root的情况下进行管理,但我宁愿让代码尽可能正确.问题是,我不确定哪个View应该用作根.这个答案说它应该是"围绕想要膨胀的视图对象的小部件".但这意味着什么呢?动作栏的那一个?活动?还有别的吗?


更新:阅读答案让我怀疑我正确的做法是:

  1. 得到ActionBar View对应的MenuItem
  2. 扎根吧
  3. 把根投成一个 ViewGroup
  4. 将结果传递给inflater

这似乎有效.任何人都可以确认或否认这是否应该做什么?

android actionview menuitem android-layout layout-inflater

37
推荐指数
3
解决办法
2万
查看次数

Android以编程方式更改导航抽屉菜单项文本

我的应用程序中有新的导航抽屉,我想从代码中动态更改导航视图菜单项标题文本.我看了很多帖子,但我想不通,我怎么能这样做.我怎样才能正确实现这一目标?

MainActivity.java

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

setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show();
    }
});

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

}
Run Code Online (Sandbox Code Playgroud)

activity_main_drawer.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

<group android:checkableBehavior="single">
    <item android:id="@+id/nav_camara" android:icon="@android:drawable/ic_menu_camera"
        android:title="Import" />
    <item android:id="@+id/nav_gallery" …
Run Code Online (Sandbox Code Playgroud)

android text menu menuitem navigation-drawer

36
推荐指数
2
解决办法
6万
查看次数

如何将"active"类添加到wp_nav_menu()当前菜单项(简单方法)

我正在使用启动主题_Underscores创建自定义Wordpress主题.我也使用Bootstrap作为前端框架.

我想修改wp_nav_menu,以便它分配当前菜单项class ="active"而不是class ="current-menu-item"(这是默认值).或者至少可以分配这两个类.我需要这个才能使用bootstrap.css中的.active类.

以下是我所拥有的示例(所有这些类都是wp生成的,请滚动查看我的意思):

<ul id="menu-main-menu" class="nav navbar-nav">
   <li id="menu-item-14" class="menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-13 current_page_item menu-item-14"><a href="">item1</a></li>
   <li id="menu-item-12" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12"><a href="">item2</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

这就是我需要的:

<ul id="menu-main-menu" class="nav navbar-nav">
   <li id="menu-item-14" class="active menu-item menu-item-type-post_type menu-item-object-page current-menu-item page_item page-item-13 current_page_item menu-item-14"><a href="">item1</a></li>
   <li id="menu-item-12" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-12"><a href="">item2</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我更愿意以正确的方式做到这一点 - 不要想改变..wp-includes/nav-menu-template.php中的任何内容,当然,也不想使用js.


好吧,我在发布这个问题之前找到了答案(它已经准备就绪,这就是为什么它仍然形成的方式,好像我仍在寻找答案),但我很难找到它所以我决定将其发布为质量保证.我希望有人会觉得这很有用.

wordpress menuitem

35
推荐指数
4
解决办法
10万
查看次数

如何以编程方式创建Menu实例?即在onCreateOptionsMenu外面扩展一个菜单

我想 onCreateOptionsMenu方法外面扩展一个菜单对象(这意味着当用户没有按下按钮时创建/显示菜单),所以我需要创建一个菜单实例来将它传递给inflate方法.

这是我想要实现的一个例子:

Menu menu = // How to create an instance !? 
new MenuInflater(context).inflate(R.menu.my_menu, menu)
Run Code Online (Sandbox Code Playgroud)

Menu是一个接口,所以我需要知道哪个类正在实现它.我确实浏览了Android代码以获取有关如何创建Menu对象的任何提示,但仍无法找到我要查找的内容.

编辑1

我的目标是onOptionsItemSelected(MenuItem item)从自定义视图中触发事件,该事件将由活动处理,因此我需要一个具有特定itemId和title的MenuItem对象以将其传递给事件.

如果我可以成功创建一个Menu对象,那么很容易获得它的子菜单MenuItems.

编辑2

根本不想显示菜单,我想要的是使用菜单XML定义的元素填充ListView,其中包含title,icon和itemId,每当单击ListViewItem时,我想触发在我处理事件活动.onOptionsItemSelected(MenuItem item)

我知道我可以解析菜单XML以提取项目信息,但是如果onOptionsItemSelected(MenuItem item)不创建标准的 MenuItem对象来将其作为参数传递,我将无法触发.

任何帮助将不胜感激.谢谢!

android menu menuitem android-layout

34
推荐指数
3
解决办法
2万
查看次数

WPF在代码中设置MenuItem.Icon

我有一个带有png的图像文件夹.我想将一个MenuItem的图标设置为该png.我如何在程序代码中写这个?

c# wpf icons menuitem

33
推荐指数
3
解决办法
5万
查看次数

如何在Android菜单xml的多个菜单中包含一个常用菜单项?

许多菜单总是有一个项目相同.

有没有办法将该项目定义为额外菜单并将其包含在所有其他菜单中?

像这样的东西:

菜单/ main.xml中

<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/menu_main"
          android:title="@string/text_mainmenu" />
</menu>
Run Code Online (Sandbox Code Playgroud)

菜单/ other.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      parent="@menu/main">
    <item android:id="@+id/menu_other"
          android:title="@string/text_othermenu" />
</menu>
Run Code Online (Sandbox Code Playgroud)

我知道,有可能以programmaticaly方式进行,但我认为xml-way更好.

android menu menuitem

29
推荐指数
2
解决办法
1万
查看次数

如何在AppCompatActivity中显示带有图标和文本的菜单项

我在xml文件中尝试了不同的组合:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        app:showAsAction="ifRoom|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

要么

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        app:showAsAction="always|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

要么

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        app:showAsAction="withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

要么

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        android:showAsAction="always|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

我尝试以编程方式设置它

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
        MenuItem item = menu.add(R.string.menu_create_alarm);
        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT|MenuItem.SHOW_AS_ACTION_IF_ROOM);
        item.setIcon(R.drawable.ic_action_accept);
        item.setOnMenuItemClickListener(
            new OnMenuItemClickListener(){

                @Override
                public boolean onMenuItemClick(MenuItem item){
                    saveAlarm();
                    return …
Run Code Online (Sandbox Code Playgroud)

android menuitem android-toolbar appcompatactivity

29
推荐指数
7
解决办法
6万
查看次数

如何更改Android菜单项的自定义字体?

我有以下Android Java和XML代码.我想更改我的应用程序的菜单项的字体.我只知道我们可以使用setTypeface更改TextView的字体,但无论如何都无法找到菜单项.

JAVA代码 - :

@Override
public boolean onCreateOptionsMenu(Menu menu) {    
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.main, menu);
    return true;
}

@Override    
public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {     
        case R.id.action_refresh1:                                          
            Toast.makeText(this, "Item1 Selected", Toast.LENGTH_SHORT)
            .show();      
        break;

        case R.id.action_refresh2:                                          
            Toast.makeText(this, "Item2 Selected", Toast.LENGTH_SHORT)
            .show();      
            break;

        default:      
            break;
   }
}
Run Code Online (Sandbox Code Playgroud)

XML代码 - :

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
    android:id="@+id/action_refresh1"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="Item1"/>

<item
    android:id="@+id/action_refresh2"
    android:orderInCategory="100"
    android:showAsAction="always"
    android:title="Item2"/>
</menu>
Run Code Online (Sandbox Code Playgroud)

我想更改两个菜单项的字体,但不知道如何为菜单项集成settypface.

android menuitem

25
推荐指数
4
解决办法
4万
查看次数

如何在routes.js中为erikras的universal react redux样板文件中的生成的菜单项实现动态路由

我目前正在开发基于CMS的项目.

我正在使用erikras的通用反应redux样板

我真的需要处理动态路由的建议

让我们从样板中采取一个简单的场景......

routes.js中

<Route path="about" component={About}/>
<Route path="login" component={Login}/>
<Route path="survey" component={Survey}/>
<Route path="widgets" component={Widgets}/>
Run Code Online (Sandbox Code Playgroud)

data.js

export const data = [
  {id: 1, property: 'Dashboard', link: '/'},
  {id: 2, property: 'Login', link: '/login'},
  {id: 3, property: 'About Us', link: '/About'},
];
Run Code Online (Sandbox Code Playgroud)

现在,假设在用户角色的基础上,json数据中的属性将发生变化

让我们说新的财产:是

{id: 4, property: 'test page', link: '/test'}
Run Code Online (Sandbox Code Playgroud)

当react会呈现组件时,它如何知道路由链接......因为它没有在routes.js中定义

我没有得到正确的方法来实现它

我们需要根据用户角色由特定菜单内容组成的侧边栏.

假设我们正在建立预订系统,可以有不同的用户角色,如管理员,维护模式,助理角色.

因此,不同的角色将具有不同的属性,因此我们需要在其基础上生成菜单,因为属性肯定会根据用户角色而不同.

谢谢!!

menuitem reactjs react-router

24
推荐指数
1
解决办法
2万
查看次数

如何动态绑定和静态添加MenuItems?

我将我的MenuItem的ItemsSource绑定到我的ViewModel中的ObservableCollection.这是我的xaml:

<MenuItem Header="_View"
          ItemsSource="{Binding Windows}">
  <MenuItem.ItemContainerStyle>
    <Style>
      <Setter Property="MenuItem.Header"
              Value="{Binding Title}" />
    </Style>
  </MenuItem.ItemContainerStyle>
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

这部分很有用,但是现在我还想在同一个View MenuItem中添加一些静态MenuItem,用分隔符分隔.这样的东西,即使我知道这不起作用,因为我不能设置两次项目.

<MenuItem Header="_View"
          ItemsSource="{Binding Windows}">
  <MenuItem.ItemContainerStyle>
    <Style>
      <Setter Property="MenuItem.Header"
              Value="{Binding Title}" />
    </Style>
  </MenuItem.ItemContainerStyle>
  <Separator />
  <MenuItem Header="item 1" />
  <MenuItem Header="item 2" />
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

现在我通过向MenuItem添加另一个级别来创建一个解决方法,如下所示:

<MenuItem Header="_View">
  <MenuItem Header="Windows"
            ItemsSource="{Binding Windows}">
    <MenuItem.ItemContainerStyle>
      <Style>
        <Setter Property="MenuItem.Header"
                Value="{Binding Title}" />
      </Style>
    </MenuItem.ItemContainerStyle>
  </MenuItem>
  <MenuItem Header="Load Layout" />
  <MenuItem Header="Save Layout" />
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

这很好用,但如果可能的话,我宁愿没有子菜单.哦,我也更喜欢在xaml而不是代码背后执行此操作.有任何想法吗?

wpf xaml styles datatemplate menuitem

22
推荐指数
1
解决办法
2万
查看次数