首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >残疾menuItem?

残疾menuItem?
EN

Stack Overflow用户
提问于 2020-12-10 09:12:17
回答 2查看 248关注 0票数 0

善良的人!告诉我如何使这样一个基本的东西,如一个禁用的菜单项与适当的外观,在例子中的材料设计?以编程的方式。提前谢谢你

编辑:以下示例将禁用单击,但不根据材料设计更改外观:

代码示例:

代码语言:javascript
复制
@Override
public void onPrepareOptionsMenu(@NonNull Menu menu) {
    super.onPrepareOptionsMenu(menu);
        MenuItem menuItem = menu.findItem(R.id.someItem);
        menuItem.setEnable(false);
}

Xml示例:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/someItem"
        android:enabled="false"
        android:title="Some title" />
</menu>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-12-10 13:12:34

我找到了一个关于如何更改菜单项中文本颜色的解决方案。令人极为难过的是,这样一个基本的东西没有从盒子里拿出来。也许有人有更好的解决方案,我会很高兴看到!

代码语言:javascript
复制
MenuItem  menuItem = menu.findItem(R.id.some_item);
menuItem.setEnabled(false);
SpannableString s = new SpannableString(menuItem.getTitle());
s.setSpan(new ForegroundColorSpan(Color.GRAY), 0, s.length(), 0);
menuItem.setTitle(s);

结果:

票数 0
EN

Stack Overflow用户

发布于 2020-12-10 10:05:21

您可以在运行时添加、删除或禁用菜单项,并更改菜单项的文本颜色,如::

如果希望根据活动生命周期期间发生的事件修改选项菜单,可以在onPrepareOptionsMenu()方法中这样做。此方法将当前存在的菜单对象传递给您,以便您可以修改它,例如添加、删除或禁用项。(片段还提供了一个onPrepareOptionsMenu()回调。) 在Android2.3.x和更低版本上,每次用户打开选项菜单(按菜单按钮)时,系统都会调用onPrepareOptionsMenu()。 在Android3.0和更高版本上,当菜单项出现在应用程序栏中时,选项菜单被认为总是打开的。当发生事件并执行菜单更新时,必须调用invalidateOptionsMenu()来请求系统调用onPrepareOptionsMenu()。

你可以看到文献资料

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
    android:id="@+id/someItem"
    android:enabled="false"
    android:title="Some title"
    app:actionViewClass="android.support.v7.widget.TextView" 
    // if using androidX
    //app:actionViewClass="androidx.appcompat.widget.AppCompatTextView"/>
 </menu>

在java代码中

代码语言:javascript
复制
 //sample code
 @Override
 public boolean onPrepareOptionsMenu (Menu menu) {
   //disable menu item and change text color
   MenuItem menu1 = menu.findItem(R.id.yourmenuid);
   menu1.setEnabled(false);
   TextView textView = (TextView) menu1.getActionView();
   textView.setTextColor(Color.BLACK);
   return true;
  }

您必须调用invalidateOptionsMenu()来请求系统调用onPrepareOptionsMenu().

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65231566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档