- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个自定义 ActionProvider
,我想用它来显示用于排序的子菜单,在视觉上类似于 ShareActionProvider
。操作 View 按预期显示,但单击图标根本不显示子菜单或显示任何视觉反馈(按下状态)。我正在使用支持 v7 库来实现向后兼容操作栏。是否缺少显示菜单的实现?
Action 提供者:
public class SortActionProvider extends ActionProvider implements OnMenuItemClickListener {
private Context mContext;
public SortActionProvider(Context context) {
super(context);
mContext = context;
}
@Override
public View onCreateActionView(){
ImageView imageView = new ImageView(mContext);
imageView.setImageResource(R.drawable.ic_action_sort_by_size);
return imageView;
}
@Override
public boolean hasSubMenu(){
return true;
}
@Override
public void onPrepareSubMenu(SubMenu subMenu){
subMenu.clear();
subMenu.add("Sort by name").setOnMenuItemClickListener(this);
subMenu.add("Sort by type").setOnMenuItemClickListener(this);
}
@Override
public boolean onMenuItemClick(MenuItem item){
Toast.makeText(mContext, "I was clicked!", Toast.LENGTH_SHORT).show();
return true;
}
}
菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:support="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/menu_sort"
android:actionProviderClass="com.myapp.provider.SortActionProvider"
android:showAsAction="always"
android:title="@string/sort"
support:actionProviderClass="com.myapp.provider.SortActionProvider"
support:showAsAction="always"/>
</menu>
最佳答案
不幸的是,onPrepareSubMenu()
仅在 onCreateActionView()
返回 null 时被调用。您的解决方案(将 PopupMenu
附加到 ImageView
)会起作用,但由于您的 ImageView
显示的是图标,您可能会考虑只设置图标在菜单 XML 中删除 ImageView
:
<item android:id="@+id/menu_sort"
android:icon="@drawable/ic_action_sort_by_size"
android:title="@string/sort"
support:actionProviderClass="com.myapp.provider.SortActionProvider"
support:showAsAction="always" />
然后:
@Override
public View onCreateActionView(){
return null;
}
这也应该解决触摸状态没有视觉反馈的问题 - 问题是您的 ImageView 未配置为对触摸状态执行任何操作。
关于android - 无法显示自定义 ActionProvider 的子菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19439106/
我想要一个单选列表作为操作栏的下拉列表。由于 ActionProvider 支持开箱即用的子菜单,我认为这很容易。但是,虽然我可以在开始时更改选中的项目(例如,在 onPrepareSubMenu()
我创建了一个自定义 ActionProvider,我想用它来显示用于排序的子菜单,在视觉上类似于 ShareActionProvider。操作 View 按预期显示,但单击图标根本不显示子菜单或显示任
我只是无法让 ActionProvider 显示子菜单,我不明白为什么。我在 xml 中定义了我的菜单: Action 提供者类: public class MActionProvider
上下文:我想要一个操作按钮,允许用户从列表中选择一些东西。我正在考虑为此使用 ActionProvider。我的数据是从 REST 服务检索的,并在本地缓存在数据库中。 问题:ActionProvid
我正在创建我的第一个 Chromecast 应用程序并关注 this教程我的 onCreateOptionsMenu 方法有问题: public boolean onCreateOptionsMen
我正在编写一个插件,它创建一个自定义Package Explorer,它代表不同层次结构中的底层文件系统层次结构(某种虚拟文件夹)。 我成功地通过实现ITreeContentProvider创建了层次
在使用操作提供程序创建菜单时,我收到一个 ClassCastException 错误,指出该类无法转换为 View。我在 DevGuide 中使用了关于 ActionProviders 的小教程所以我
我正在尝试在我的 ActionBarSherlock 中实现 ShareActionProvider。 下面的代码给我这个错误: Cannot cast from ActionProvider to
是否可以在 Android 3.0+ 中使用菜单项的自定义 View 创建 ActionBar ActionProvider?到目前为止,我已经看到这些带有图标和文本,以及带有复选框的文本,但是可以改
我有这样的自定义 ActionProvider。 .... import android.support.v4.view.ActionProvider; public class MyActionPr
我正在尝试使用自定义 ActionProvider,下面是代码,但我不知道如何控制 MainActivity 中的 View ,如何在下面的代码“OnClick”函数中控制 MainActivity
这个问题在这里已经有了答案: Unable to cast Action Provider to Share Action Provider (8 个答案) 关闭 9 年前。 下面是我的 Activ
我正在开发 Android 应用程序,但在模板“主/详细流程”上实现共享按钮时遇到问题 当我在扩展 AppCompatActivity 的 ItemDetailActivity 上创建菜单时(但是,我
我是一名优秀的程序员,十分优秀!