标签: menu

如何更新ActionBar中显示的菜单项?

我有一个活动,有2个片段.两者都是ListFragments,并且都将MenuItems贡献给菜单.我有一个MenuItem我设置了属性android:showAsAction让它显示为ActionBar上的一个按钮.哪个工作正常.

现在MenuItem依赖于状态.它是暂停/恢复菜单选项,用于暂停和恢复队列.我的问题是,当创建片段时,我无法弄清楚如何设置它的初始雕像.

它的状态取决于队列是否暂停.所以我有一个AsyncTask来获取队列并根据队列的状态设置一个布尔值(暂停).我正在调用PrepareOptionsMenu来根据队列的最后已知状态设置Pause菜单项的文本,如果我将MenuItem保留在实际菜单中,这将很有用.您点击菜单图标并触发onPrepareOptionsMenu,菜单会在显示之前更新.

问题是,如果我在ActionBar(showAsAction)上放置相同的MenuItem,如何强制它更新而不必调用onPrepareOptionsMenu?我需要能够这样做,因为在第一次启动应用程序时,我发送了一个获取队列的请求,但是在设置并显示ActionBar后,任务返回.我在我的片段中创建了一个处理程序,每次我获得队列更新时都会调用它,但是从那里,如何在ActionBar上更新我的MenuItem的文本?我似乎无法找到一种方法来获取当前设置的Menu来操作它,除了onPrepareOptionMenu.

罗布

android menu android-fragments android-actionbar

91
推荐指数
3
解决办法
10万
查看次数

更改导航抽屉中菜单项的文本颜色

我正在尝试为我的应用程序添加一个夜间主题,我浪费了将近三个小时,只是试图让我的导航抽屉中的文本和图标变为白色以及深色背景.下面是我想要去了解在这样的方式onCreate()MainActivity.java:

navigationView = (NavigationView) findViewById(R.id.navigation_view);
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {

    // This method will trigger onItemClick of navigation menu
    @Override
    public boolean onNavigationItemSelected(MenuItem menuItem) {

        // Checking if the item is in checked state or not, if not make it in checked state
        if (menuItem.isChecked())
            menuItem.setChecked(false);
        else menuItem.setChecked(true);

        if (nightMode == 0) {
            SpannableString spanString = new SpannableString(menuItem.getTitle().toString());
            spanString.setSpan(new ForegroundColorSpan(Color.WHITE), 0, spanString.length(), 0); // fix the color to white
            menuItem.setTitle(spanString);
        }
Run Code Online (Sandbox Code Playgroud)

nightMode布尔是无关紧要,因为它的工作原理.当夜间模式设置为开(0)时,导航抽屉中选择的任何菜单项都将变为白色.然而,这仅在选择每个项目时才会发生,这显然是不方便的.这是我的drawer_dark.xml:

    <?xml version="1.0" encoding="utf-8"?>
<menu …
Run Code Online (Sandbox Code Playgroud)

xml android menu

77
推荐指数
8
解决办法
10万
查看次数

针对API <11的Android invalidateOptionsMenu()

我使用ActivityCompat.invalidateOptionsMenu(MainActivity.this);这样我的菜单项"刷新"可以自动启用/禁用而无需使用必须触摸"菜单"选项(想象用户离开菜单...我需要"刷新"菜单项自动禁用和启用自己).

ActivityCompat.invalidateOptionsMenu(MainActivity.this)Android 11+ 的工作正常.但是我可以用什么来安装Android API <11?:S我搜索了这么多,但我找不到答案.有人可以帮我这个吗?

这适用于Android API 11+,使用onPrepareOptionsMenuActivityCompat.invalidateOptionsMenu(MainActivity.this).问题是尝试在Android API <11中完成.

这是我的onPrepareOptionsMenu方法:

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    if(menuRefreshEnable){
        menu.getItem(0).setEnabled(true);
    }
    if(!menuRefreshEnable){
        menu.getItem(0).setEnabled(false);
    }       
    return true;
}
Run Code Online (Sandbox Code Playgroud)

android menu

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

在列表视图上的长按事件后创建菜单

我有一个连接到数据库的列表视图,显示所有条目.如果用户长按listview(数据库条目)中的项目,我想要显示一个菜单,显示编辑或删除条目的选项.我怎样才能做到这一点.

直到现在,我已经尝试使用onItemLongClick监听器和吐司,显示长按的视图的ID.

@Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
        int position, long id) {

    String res = Long.toString(id);
     Toast toast = Toast.makeText(this, res, Toast.LENGTH_SHORT);
     toast.show();

    return true;
}
Run Code Online (Sandbox Code Playgroud)

android listview menu long-click

69
推荐指数
3
解决办法
9万
查看次数

在WPF的菜单中放置一条分隔线

在XAML中,如何在菜单中放置标准分割线?

例如

<MenuItem Header="_File" Name="m_fileMenu">
    <MenuItem Header="_Open" Command="ApplicationCommands.Open"/>
    <!-- Trying to put a divider here! -->
    <MenuItem Header="-" />  <!-- Wrong guess -->
    <MenuItem Header="E_xit" Command="ApplicationCommands.Close" />
</MenuItem>
Run Code Online (Sandbox Code Playgroud)

wpf xaml menu

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

活动菜单项 - asp.net mvc3母版页

我一直在扫描,试图找到一个合适的解决方案,为主页面中的菜单项分配"活动/当前"类.关于是否执行此客户端与服务器端,该线路在中间分开.

说实话,我是JavaScript和MVC的新手,所以我没有意见.我更愿意以"最干净"和最恰当的方式做到这一点.

我有以下jQuery代码将"活动"类分配给<li>项...唯一的问题是"索引"或默认视图菜单项将始终分配活动类,因为URL始终是子字符串其他菜单链接:

(default) index = localhost/
link 1 = localhost/home/link1
link 2 = localhost/home/link1

$(function () {
 var str = location.href.toLowerCase();
  $('#nav ul li a').each(function() {
   if (str.indexOf(this.href.toLowerCase()) > -1) {
    $(this).parent().attr("class","active"); //hightlight parent tab
   }
});
Run Code Online (Sandbox Code Playgroud)

伙计们,有更好的方法吗?有人至少会帮助我获得客户端版本的防弹吗?那么"索引"或默认链接总是"活跃"?有没有办法为索引方法分配假扩展?喜欢而不仅仅是基本URL localhost/home/dashboard,它不会是每个链接的子串?

说实话,我并没有真正遵循做这个服务器端的方法,这就是为什么我试图用jQuery做客户端...任何帮助将不胜感激.

asp.net-mvc master-pages menu asp.net-mvc-3

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

自app app以来,Searchview无效

自从我实现app compat后,我的searchview不再起作用了:

 Process: com.laurenswuyts.witpa, PID: 26666
    java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v7.widget.SearchView.setSearchableInfo(android.app.SearchableInfo)' on a null object reference
            at com.laurenswuyts.witpa.Activities.Events.EventActivity.onCreateOptionsMenu(EventActivity.java:75)
            at android.app.Activity.onCreatePanelMenu(Activity.java:2820)
            at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:275)
            at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:276)
            at android.support.v7.app.ActionBarActivityDelegate$1.onCreatePanelMenu(ActionBarActivityDelegate.java:79)
            at android.support.v7.widget.WindowCallbackWrapper.onCreatePanelMenu(WindowCallbackWrapper.java:49)
            at android.support.v7.internal.app.ToolbarActionBar.populateOptionsMenu(ToolbarActionBar.java:459)
            at android.support.v7.internal.app.ToolbarActionBar$1.run(ToolbarActionBar.java:69)
            at android.os.Handler.handleCallback(Handler.java:739)
            at android.os.Handler.dispatchMessage(Handler.java:95)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5221)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Run Code Online (Sandbox Code Playgroud)

因此,当我拥有它时,搜索视图的nullpointer:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.event_main, menu);

        // Get the SearchView and set the searchable configuration
        // Associate searchable configuration with the …
Run Code Online (Sandbox Code Playgroud)

java search android menu android-appcompat

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

如何通过单击<li>激活HTML链接?

我有以下标记,

<ul id="menu">              
    <li><a href="#">Something1</a></li>
    <li><a href="#">Something2</a></li>
    <li><a href="#">Something3</a></li>
    <li><a href="#">Something4</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

<li>有点大,左边有一个小图像,我必须实际点击它<a>来激活链接.如何点击<li>激活链接?

EDIT1:

ul#menu li
{
    display:block;
    list-style: none;
    background: #e8eef4 url(images/arrow.png) 2% 50% no-repeat;
    border: 1px solid #b2b2b2;
    padding: 0;
    margin-top: 5px;
}

ul#menu li a
{

    font-weight: bold;
    text-decoration: none;
    line-height: 2.8em;
    padding-right:.5em;
    color: #696969;
}
Run Code Online (Sandbox Code Playgroud)

html css anchor menu html-lists

61
推荐指数
5
解决办法
26万
查看次数

当onPrepareOptionsMenu切换菜单条目时,如何刷新ActionBar?

在我的应用程序中,我经常启用/禁用菜单条目,并从onPrepareOptionsMenu中看到它们.

今天我开始将android:showAsAction菜单属性添加到我的一些Android 2.x应用程序中,以显示ActionBar上最常用的菜单条目.

ActionBar不会立即反映启用/禁用和可见性.我需要点击右边的菜单下拉菜单才能看到这种变化.

好的,我知道菜单会在PrepareOptionsMenu上触发.但是我需要做些什么才能刷新ActionBar?我认为这个变化需要从onOptionsItemSelected中应用,但我不知道应该调用什么.

这是菜单:

<item
    android:icon="@drawable/ic_menu_mapmode"
    android:id="@+id/men_mapview"
    android:showAsAction="ifRoom|withText"
    android:title="@string/txt_mapview" />

<item
    android:icon="@drawable/ic_menu_mapmode"
    android:id="@+id/men_satelliteview"
    android:showAsAction="ifRoom|withText"
    android:title="@string/txt_satelliteview" />
Run Code Online (Sandbox Code Playgroud)

这是onPrepareOptionsMenu:

@Override
public boolean onPrepareOptionsMenu(final Menu menu) {
    MenuItem menuItemMapView = menu.findItem(R.id.men_mapview);
    MenuItem menuItemSatelliteView = menu.findItem(R.id.men_satelliteview);

    if (mapView.isSatellite()) {
        menuItemMapView.setEnabled(true).setVisible(true);
        menuItemmenuItemSatelliteView.setEnabled(false).setVisible(false);
    } else {
        menuItemMapView.setEnabled(false).setVisible(false);
        menuItemmenuItemSatelliteView.setEnabled(true).setVisible(true);
    }

    return super.onPrepareOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

这是onOptionsItemSelected

@Override
public boolean onOptionsItemSelected(final MenuItem menuItem) {
    switch (menuItem.getItemId()) {
        case R.id.men_mapview:
            mapView.setSatellite(false);
            mapView.setStreetView(true);
            mapView.invalidate();

            invalidateOptionsMenu(); // This works on Android 3.x devices only
            return true;
        case R.id.men_satelliteview:
            mapView.setSatellite(true);
            mapView.setStreetView(false);
            mapView.invalidate(); …
Run Code Online (Sandbox Code Playgroud)

android menu android-actionbar

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

Twitter Bootstrap将活动类添加到li

使用twitter bootstrap,我需要启动主导航的li部分的活动类.自动的.我们使用php而不是ruby.

示例导航:

<ul class="nav">
    <li><a href="/">Home</a></li>
    <li><a href="/forums">Forums</a></li>
    <li><a href="/blog">Blog</a></li>
    <li><a href="/faqs.php">FAQ's</a></li>
    <li><a href="/item.php">Item</a></li>
    <li><a href="/create.php">Create</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

Bootstrap代码如下:

<li class="active"><a href="/">Home</a></li>
Run Code Online (Sandbox Code Playgroud)

因此,只需要弄清楚如何将活动类附加到当前页面.看了几乎所有关于Stack的答案,没有真正的快乐.

我玩过这个:

/*menu handler*/
$(function(){
    var url = window.location.pathname;  
    var activePage = url.substring(url.lastIndexOf('/')+1);
    $('.nav li a').each(function(){  
        var currentPage = this.href.substring(this.href.lastIndexOf('/')+1);

        if (activePage == currentPage) {
            $(this).parent().addClass('active'); 
        } 
    });
})
Run Code Online (Sandbox Code Playgroud)

但没有快乐.

jquery menu twitter-bootstrap

56
推荐指数
7
解决办法
14万
查看次数