我想在单击按钮时打开上下文菜单,但是当我单击按钮时,我还必须知道哪个列表项是聚焦的.你知道怎么做吗?onclick方法中的代码应该是什么?
我试图在片段内创建一个上下文菜单项.但是我遇到了getMenuInflater()方法的问题.这是未定义的.我已经导入了所有必要的包.谁能指出我在这里做错了什么?
这是我的代码:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.view.MenuItem;
public class FeaturedFragment extends Fragment {
public FeaturedFragment() {
}
public static final String ARG_SECTION_NUMBER = "section_number";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.featured_fragment,container,false);
registerForContextMenu(view);
return view;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)
{
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater inflater = getMenuInflater(); …Run Code Online (Sandbox Code Playgroud) 我有一个listActivity,可以长按单击显示CAB.如果选择了多个项目,我想隐藏我的一个菜单项.
我会跟踪所选项目的数量onItemCheckedStateChanged().但是,我无法访问菜单以从此功能中删除该项目.请参阅下面的代码中的注释,以了解我正在尝试的内容.我觉得我缺少一些简单的核心理解......下面的代码是从我的onCreate()函数中调用的.
private void setupActionBarContext() {
ListView listView = getListView();
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
private int selCount = 0;
ArrayList<Long> idList = new ArrayList<Long>();
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
if (checked) {
selCount++;
idList.add(id);
} else {
selCount--;
idList.remove(id);
}
mode.setTitle(selCount + " selected");
// I WOULD LIKE TO HIDE ITEM ON MENU IF 'selCount' IS > 1
// For example something like this...
// if (selCount > 1) …Run Code Online (Sandbox Code Playgroud) 首先让我概述一下Contextual Menus和Popup Menus之间的区别(取自这里):
PopupMenu是一个锚定到View 的模式菜单
上下文菜单[我特别谈论浮动上下文菜单]提供了影响UI中特定项目或上下文框架的操作.您可以为任何视图提供上下文菜单,但它们通常用于ListView,GridView或其他视图集合中的项目,用户可以在其中对每个项目执行直接操作.
作为指导,文档区分了它们的用途: - PopupMenu:"为与特定内容相关的操作提供溢出式菜单(例如Gmail的电子邮件标题......" - ContextualMenu:"对于影响所选内容的操作... "
我正在追寻PopupMenu的视觉外观和互动.
我有一个ListView,其中每个项目右侧都有一个按钮.
--------------------
| Item 1 [ ]|
--------------------
--------------------
| Item ... [ ]|
--------------------
--------------------
| Item n [ ]|
--------------------
Run Code Online (Sandbox Code Playgroud)
同时保留onItemClick每个ListItem,我想利用按钮触发一个PopupMenu.
其中的操作PopupMenu列在my_menu.xml,因此菜单的每个实例之间的唯一区别是它被单击的项目.
根据这篇文章,我已经尝试覆盖getView()我ListAdapter的OnClickListener每个按钮添加一个按钮.结果不一致; 并非所有的点击都在注册(可能是由于回收 - 我还没有尝试过这个修复)但总的来说这种方法看起来很麻烦,考虑到为列表视图指定上下文菜单的简易性.
我还尝试添加一个上下文菜单,这很简单,只有当列表项被长按时才触发.
该getView()方法是可行的方法还是更简单的方法?
在我的列表视图中,我为每个项目设置了一个迷你溢出按钮,类似于播放音乐的播放列表中的每个曲目.当您单击溢出按钮时,它们会为每个项目显示PopupMenu.长按什么都不做.
我想那样但不确定怎么样?菜单页面仅详细说明了如何为各个视图启用弹出菜单. …
我的应用程序打开输入法选择器(您选择键盘的菜单)InputMethodManager.showInputMethodPicker().我的应用程序实际上并没有创建选择器(它是由InputMethodManager创建的),但我知道它是a ContextMenu并且它的id是R.id.switchInputMethod.

选择器是多步骤向导的一部分,因此我需要知道选择器何时关闭,以便我的应用程序可以继续执行下一步.现在我正在检查后台线程中是否更改了默认键盘,但如果用户选择相同的键盘或按下则无效.
所以我需要一种方法来判断选择器何时关闭(或者其他一些聪明的方式来知道何时继续).
提前致谢...
我有一个显示项目列表的对话框,我需要能够编辑/删除此列表中的项目,因此我将上下文菜单放入其中,因此当用户长按项目时,他们可以选择他们想要做的事情(编辑或删除项目).
问题是onContextItemSelected当选择上下文菜单中的项时永远不会被调用.
我查看是否可能创建对话框片段的活动正在获得回调,但这不是为什么它没有被调用?你不能在对话框中做一个上下文菜单吗?
public class TypesDialogList extends DialogFragment implements LoaderManager.LoaderCallbacks<Cursor>,OnItemClickListener,OnCreateContextMenuListener{
ListView lv;
SimpleCursorAdapter mAdapter;
private int EDIT_TYPE = 1;
private int DELETE_TYPE = 2;
OnEditType mType;
public Dialog onCreateDialog(Bundle state){
final View v = getActivity().getLayoutInflater().inflate(R.layout.layer_dialog_layout, null, false);
lv = (ListView)v.findViewById(R.id.listView1);
lv.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
lv.setOnItemClickListener(this);
lv.setOnCreateContextMenuListener(this);
return new AlertDialog.Builder(getActivity()).setView(v).setPositiveButton("Add Type", new OnClickListener(){
public void onClick(DialogInterface dialog, int which) {
}
}).setTitle("Type's").create();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo){
super.onCreateContextMenu(menu, v, menuInfo);
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) menuInfo;
long id …Run Code Online (Sandbox Code Playgroud) 我在嵌套的fragement中实现了一个上下文动作模式栏.此片段是视图分页器的一部分,视图分页器也是片段和导航抽屉的一部分.
我的问题:如果片段不再集中,我想关闭上下文操作模式栏.因此,如果我在视图寻呼机中滑动,则应关闭操作模式栏.但是如果我使用onPause()嵌套片段的方法,则不直接调用该方法.通常它等到我向前滑了两三次......这是一些照片:


在第二张图片中,您可以看到操作模式栏仍然存在.所以我的问题是:我应该在哪种方法中调用我的actionModeBar.finish()方法,如果我离开片段,直接关闭动作模式栏?
也许片段的代码可以帮助你:
public class EditorFragment extends Fragment {
private static final String KEY_POSITION="position";
ListView listView;
private boolean isMultipleList = false;
private ActionMode acMode;
private int counterChecked = 0;
private ActionMode.Callback modeCallBack = new ActionMode.Callback() {
public boolean onPrepareActionMode(ActionMode mode, Menu menu){
return false;
}
public void onDestroyActionMode(ActionMode mode) {
listView.clearChoices();
for (int i = 0; i < listView.getChildCount(); i++)
listView.setItemChecked(i, false);
listView.post(new Runnable() {
@Override
public void run() {
listView.setChoiceMode(ListView.CHOICE_MODE_NONE);
}
});
isMultipleList = …Run Code Online (Sandbox Code Playgroud) android android-viewpager android-contextmenu android-actionmode
如何使用listview适配器中的单击按钮打开菜单上下文Android?
我尝试使用我的代码,但没有显示菜单上下文,
码
public View getView(int position, View convertView, ViewGroup parent) {
vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.tulisan_komentar_list_item,parent, false);
LinearLayout content_favorite= (LinearLayout)vi.findViewById(R.id.content_favorite);
final TextView date_komentar = (TextView)vi.findViewById(R.id.date_komentar); // artist name
final TextView isi_komentar = (TextView)vi.findViewById(R.id.isi_komentar); // duration
final TextView nama_komentar = (TextView)vi.findViewById(R.id.nama_komentar); // duration
final TextView id_tulisan_komentar = (TextView)vi.findViewById(R.id.id_tulisan_komentar); // duration
final ImageButton act_komentar = (ImageButton)vi.findViewById(R.id.act_komentar);
ImageView thumb_image=(ImageView)vi.findViewById(R.id.avatar_komentar); // thumb image
HashMap<String, String> tulisan = new HashMap<String, String>();
tulisan = data.get(position);
// Setting all values in listview
date_komentar.setText(tulisan.get(ContentCommentActivity.TAG_DATE_KOMENTAR));
isi_komentar.setText(tulisan.get(ContentCommentActivity.TAG_ISI_KOMENTAR));
nama_komentar.setText(tulisan.get(ContentCommentActivity.TAG_NAMA_KOMENTAR));
id_tulisan_komentar.setText(tulisan.get(ContentCommentActivity.TAG_ID_TULISAN_KOMENTAR)); …Run Code Online (Sandbox Code Playgroud) 我想多选上下文菜单添加到listview与支持库22.1.1使用AppCompatActivity和Toolbar
没有支持库我可以使用 AbsListView.MultiChoiceModeListener
使用支持库,作为参数MultiChoiceModeListener接受的支持版本没有等效存在android.support.v7.view.ActionMode.
我该怎么做才能让它与支持库一起工作?
android android-appcompat android-listview action-menu android-contextmenu