首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >按下ImageButton时,它不显示菜单项

按下ImageButton时,它不显示菜单项
EN

Stack Overflow用户
提问于 2017-05-26 22:57:36
回答 2查看 319关注 0票数 0

我有一个自定义的ListView。在自定义ListView的布局中,我有一个ImageButton,它充当溢出菜单(类似于ActionBar上菜单的工作方式):

布局/item_list.xml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_more_vert_black_24dp"
        android:contentDescription="@string/descr_overflow_button"
        android:id="@+id/overflowMenu"
        android:layout_alignParentRight="true"/>

在本活动中,我在onCreate方法中将此ImageButton配置为弹出窗口:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    overflowMenu = (ImageButton) findViewById(R.id.overflowMenu);
    popupMenu = new PopupMenu(this, overflowMenu);
    popupMenu.setOnMenuItemClickListener(this);

我还在onCreateOptionsMenu中对其进行了膨胀:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = popupMenu.getMenuInflater();
    inflater.inflate(R.menu.popup_menu, popupMenu.getMenu());
    return true;
}

我在menu/popup_menu.xml文件夹中有以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="schemas.android.com/apk/res-auto"
      xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">
    <item android:id="@+id/report" android:title="Report"
          app:showAsAction="always"/>
    <item android:id="@+id/share" android:title="Share"
          app:showAsAction="always"/>
</menu>

我加了这个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@Override
public boolean onMenuItemClick(MenuItem item) {
    return true;
}

但是,当我尝试单击电话上的ImageButton时,什么也没有发生。它不会按其应有的方式显示菜单项。我遗漏了什么?

EN

回答 2

Stack Overflow用户

发布于 2017-05-26 23:14:22

这个问题是重复的。对于自定义布局,您不能使用菜单,必须使用PopupWindow

Android MenuItem Custom Layout

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
PopupWindow popupwindow_obj = popupDisplay();
popupwindow_obj.showAsDropDown(clickbtn, -40, 18); // where u want show on view click event popupwindow.showAsDropDown(view, x, y);

public PopupWindow popupDisplay() 
{ 

    final PopupWindow popupWindow = new PopupWindow(this);

    // inflate your layout or dynamically add view
    LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    View view = inflater.inflate(R.layout.mylayout, null);

    Button item = (Button) view.findViewById(R.id.button1);

    popupWindow.setFocusable(true);
    popupWindow.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
    popupWindow.setContentView(view);

    return popupWindow;
}

//在res/layout文件夹中创建名为my layout.xml的XML文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Window test" />
</LinearLayout>
票数 0
EN

Stack Overflow用户

发布于 2017-05-27 10:06:28

首先,PopupMenu正是您所需要的。从docs

弹出菜单显示垂直列表中的项目列表,该列表锚定到调用菜单的视图。它非常适合于提供与特定内容相关的操作溢出,或者为命令的第二部分提供选项。

现在你的实现不能工作的原因是因为onCreateOptionsMenuonMenuItemClick是用来管理activity的菜单的,所以膨胀溢出菜单是没有意义的。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
imageButton = findViewById(R.id.overflow_menu);
PopupMenu popup = new PopupMenu(this, imageButton);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.popup_menu, popup.getMenu());
imageButton.setOnClickListener(new View.OnClickListener(){
    @Override
    public void onClick(View v) {
        popup.show();
    }    
});

你也可以看看上面链接的文档中的例子。

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

https://stackoverflow.com/questions/44211163

复制
相关文章
error信息显示状态下按钮按下时error不消失问题
当画面增加一个按钮,在输入框表示error状态下,按下按钮,error信息还是没有消失,即使在按下事件中已经设置了setCustomValidity()方法,还是没有起效。
repick
2021/11/25
1.5K0
error信息显示状态下按钮按下时error不消失问题
android 显示图片的指定位置图像 ImageView ImageButton
废话不多说,网上搜了一下,大多都是通过代码重新绘制。因为我比较粗俗,所以自己找到了一种解决办法。
星尘的一个朋友
2020/11/25
2.5K0
android 显示图片的指定位置图像 ImageView ImageButton
当鼠标按下时拖动元素,简单的JS实现
通过一个布尔值作为是否移动的标志,按下时为TRUE,代表跟随移动,鼠标松开为FALSE,代表不跟随移动,鼠标移动时改变元素偏移量。
房东的狗丶
2023/02/17
3.7K0
ImageButton与Button
1.Button控件 Butotn控件,主要用来实现一些命令操作,通过注册监听事件来实现。首先需要在xml文档中放入一个button按钮。 1 <Button 2 android:id="@+id/button1" 3 android:layout_width="180dp" 4 android:layout_height="64dp" 5 android:layout_x="45dp" 6 android:layout
水击三千
2018/02/27
1.2K0
Button和ImageButton[通俗易懂]
通过他们自身的.setOnClickListener(OnclickListener)方法加入点击事件。
全栈程序员站长
2022/01/31
1K0
Linux命令行中按下d时发生了什么
在《Linux 中的主机、控制台和终端》中我们讨论了主机和终端的关系,unix系统正是基于这一理念设计的。虽然Linux和unix代码上不同,但是设计理念确是一脉相承的。所以对于Linux也同样适用。
mwangblog
2018/07/04
8990
ImageButton和ZoomButton使用
Android开发中除了使用Button按钮,还可以使用自带图标的按钮,即ImageButton。
李小白是一只喵
2020/04/24
9790
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
在一个dom节点的事件绑定中,如果同时绑定了dblclick和mousedown那么想要执行双击事件(dblclick)时能就会触发两次mousedown事件。
李维亮
2023/10/23
7670
双击事件(dblclick)时,不触发鼠标按下(mousedown) 动作事件
ImageButton和ZoomButton使用大全
上一期我们学习了ImageView的使用,那么本期来学习ImageView的两个子控件ImageButton和ZoomButton的使用。 一、ImageButton 在Android开发中除了使用Button按钮,还可以使用自带图标的按钮,即ImageButton。Button与ImageButton的区别在于,Button生成的按钮上显示文字,而ImageButton上则显示图片。 需要指出的是,为ImageButton按钮指定android:text属性没用,由于ImageBu
分享达人秀
2018/02/02
1.3K0
ImageButton和ZoomButton使用大全
android imageButton 透明图片
这个时候,我们假设想做成不规则button的话。第一步就是搞一张边缘透明的png图片,然后用src指定到他。这个时候我们会发现,还没有达到要的效果。还有图片周围还是有一层渲染。此时还要搞第二步:须要对ImageButton设置背景属性android:background=”#00000000″。就实现了不规则button的效果了。
全栈程序员站长
2022/07/05
5880
android imageButton 透明图片
WordPress 不同的文章和页面显示不同的菜单项
通过 Page Specific Menu Items 插件允许用户在编辑文章和页面时,选择显示的菜单项。
星哥玩云
2022/09/14
9700
WordPress 不同的文章和页面显示不同的菜单项
Power BI 按维度层级显示单位
wujunmin
2023/09/05
1700
Power BI 按维度层级显示单位
Linux下gdb使用gdb命令时显示找不到文件
用户10551528
2023/10/18
8100
Android开发笔记(四十三)点击事件
1、单击事件,主要用于Button和ImageButton控件,布局视图与TextView、ImageView控件用的也比较多。相关类名与方法说明如下: 监听器类名 : View.OnClickListener 设置监听器的方法 : setOnClickListener 监听器需要重写的点击方法 : onClick 2、长按事件,较少使用,一般长按要么弹出提示对话框,要么弹出上下文菜单(上下文菜单只需注册就好,无需额外处理长按事件)。相关类名与方法说明如下: 监听器类名: View.OnLongClickListener 设置监听器的方法 : setOnLongClickListener 监听器需要重写的点击方法 : onLongClick 3、组合按钮点击事件,一般用于CheckBox控件。相关类名与方法说明如下: 监听器类名 : CompoundButton.OnCheckedChangeListener 设置监听器的方法 : setOnCheckedChangeListener 监听器需要重写的点击方法 : onCheckedChanged 4、单选按钮点击事件,只能用于RadioGroup视图。相关类名与方法说明如下: 监听器类名 : RadioGroup.OnCheckedChangeListener 设置监听器的方法 : setOnCheckedChangeListener 监听器需要重写的点击方法 : onCheckedChanged 常用按钮点击事件的具体实现代码可参考《Android开发笔记(三十七)按钮类控件》。
aqi00
2019/01/18
1.4K0
标量tensor转numpy数组时在pycharm调试下显示异常「建议收藏」
最近发现了一个问题,在标量tensor转numpy数组之后,在pycharm调试的过程中,我想看一下这个数组的值,却发现显示异常。
全栈程序员站长
2022/11/02
9710
标量tensor转numpy数组时在pycharm调试下显示异常「建议收藏」
按下开机键,Linux做了什么?
计算机开机是一个神秘的过程。我们只是按了开机键,就看到屏幕上的进度条或者一行行的输出,直到我们到达登录界面。然而,计算机开机又是个异常脆弱的过程,我们满心期望的登录界面可能并不会出现,而是一个命令行或者错误信息。了解计算机开机过程有助于我们修复开机可能出现的问题。
马哥linux运维
2019/05/23
1.4K0
按下开机键,Linux做了什么?
拼多多按下用户加速键
随着互联网的更新迭代,互联网行业的发展也越发迅猛,从前一个头部企业的跑出往往需要十几二十年的时间,而现在只需要几年便可以与许多老牌企业相媲美,比如字节跳动、美团、拼多多等。其中,拼多多的发展最为迅速。
金融外参
2021/06/01
5680
拼多多按下用户加速键
使用JS监听键盘按下事件
altKey、ctrlKey、shiftKey:当组合按下(如ctrl+c)时,ctrlKey会变为true
超级小的大杯柠檬水
2023/05/06
11.5K0
使用JS监听键盘按下事件
《Monkey Android》第11课Button和ImageButton
其中的item标签,用来定义Button的不同状态下显示的drawable,它可以是图片或者颜色值,关于状态有如下几个:
GitOPEN
2019/01/29
5140
点击加载更多

相似问题

如何显示ImageButton已被按下?

31

ImageButton -按下时切换颜色

33

按下未显示的ImageButton状态

22

安卓: ImageButton未显示按下状态

20

按下并单击事件时的ImageButton更改

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文