GVKun编程网logo

单击android中的Menu按钮打开上下文菜单(android menu点击事件)

14

在本文中,我们将为您详细介绍单击android中的Menu按钮打开上下文菜单的相关知识,并且为您解答关于androidmenu点击事件的疑问,此外,我们还会提供一些关于androidContextMe

在本文中,我们将为您详细介绍单击android中的Menu按钮打开上下文菜单的相关知识,并且为您解答关于android menu点击事件的疑问,此外,我们还会提供一些关于android ContextMenu 上下文菜单示例、Android ICS上下文菜单替换、android – 单击上下文菜单、android – 在屏幕旋转后保持上下文菜单的有用信息。

本文目录一览:

单击android中的Menu按钮打开上下文菜单(android menu点击事件)

如何在 Android设备上单击菜单按钮打开上下文菜单?有人可以帮我吗…

@Override  
public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo) {  
    super.onCreateContextMenu(menu,v,menuInfo);  
    menu.setHeaderTitle("Select");  
    menu.add(0,v.getId(),"Gmail");  
    menu.add(0,"Facebook");
    menu.add(0,"Twitter");  
}  

@Override  
public boolean onContextItemSelected(MenuItem item) {  
    if(item.getTitle()=="Gmail"){function1(item.getItemId());}  
    else if(item.getTitle()=="Facebook"){function2(item.getItemId());}  
    else if(item.getTitle()=="Twitter"){function3(item.getItemId());}  

    return true;  
}

如何点击菜单按钮打开上面的上下文菜单?

解决方法

Are you sure you want to open context Menu on Click of Menu button?

因为,上下文菜单适用于特定视图,

上下文菜单提供影响UI中特定项目或上下文框架的操作.您可以为任何视图提供上下文菜单,但它们通常用于ListView,GridView或其他视图集合中的项目,用户可以在其中对每个项目执行直接操作.

要在长按下显示上下文菜单,大多数客户端将要调用registerForContextMenu(View)并覆盖onCreateContextMenu(ContextMenu,View,ContextMenu.ContextMenuInfo).

对于设备的菜单按钮,您可以使用Options Menu

更新:

我从来没有试过这个,但你可以做点什么,

>处理菜单按钮按下设备事件,

public boolean onKeyUp(int keyCode,KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_MENU) {
         // ........
     }
    return true;
 }

>把线放进去,

this.openContextMenu(view); // Here view is reference for which you have a register contect menu..

android ContextMenu 上下文菜单示例

android ContextMenu 上下文菜单示例

ch2_contextmenu.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    
    <TextView android:id="@+id/tv"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="这是一个上下文菜单ContextMenu的示例"/>
    
    <EditText android:id="@+id/myEd"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>

</LinearLayout>

ContextMenuActivity.java :

package com.example.ch7;



import com.example.baseexample.R;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.widget.EditText;
import android.widget.TextView;

public class ContextMenuActivity extends Activity {

	private String tempStr;
	private TextView tv;
	private EditText myEd;
	
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.ch7_contextmenu);
		this.registerForContextMenu(findViewById(R.id.tv));
		this.registerForContextMenu(findViewById(R.id.myEd));
	}
	
	public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo){
		menu.setHeaderIcon(R.drawable.ic_launcher);
		if(v==findViewById(R.id.tv)){
			menu.add(0,1,0,"复制");
			menu.add(0,2,0,"剪切");
			menu.add(0,3,0,"删除");
		}
		if(v==findViewById(R.id.myEd)){
			menu.add(0,4,0,"粘贴");
			menu.add(0,5,0,"删除");
		}
	}
	
	public boolean onContextItemSelected(MenuItem item){
		tv = (TextView)findViewById(R.id.tv);
		myEd = (EditText)findViewById(R.id.myEd);
		switch(item.getItemId()){
		case 1:
			tempStr = tv.getText().toString();
			break;
		case 2:
			tempStr = tv.getText().toString();
			tv.setText("");
			break;
		case 3:
			tv.setText("");
			break;
		case 4:
			myEd.setText(tempStr);
			break;
		case 5:
			myEd.setText("");
			break;
		}
		return true;
	}
	
	
}


Android ICS上下文菜单替换

Android ICS上下文菜单替换

我正在寻找有关从ICS开始似乎可以替代长按菜单的信息.

如果您使用的是最新版本的Google音乐,则可以看到该菜单,该菜单几乎可以附加在任何菜单上,并且它是一个小直角三角形.

由于现在不鼓励长按上下文菜单,并且不会在较大的屏幕上重新创建上下文菜单,因此我希望实现这些ICS菜单.我正在寻找具有此行为或该图标的规格,其间距,其大小等的视图.

解决方法:

我找到了小部件,它实际上是一个微调器. “电子邮件”应用程序的源代码有一个示例,我们可以在此处查看:

https://github.com/android/platform_packages_apps_email/blob/master/res/layout/account_setup_incoming_fragment.xml

<TextView
    android:text="@string/account_setup_incoming_security_label"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:textAppearance="?android:attr/textAppearanceSmall"
    android:textColor="?android:attr/textColorPrimary" />
<Spinner
    android:id="@+id/account_security_type"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:contentDescription="@string/account_setup_incoming_security_label" />

如果我们在电子邮件程序中查看此UI,则可以看到小三角菜单,而正是这个微调器在起作用.

小三角形图标可以在这里找到:

https://github.com/android/platform_packages_apps_email/blob/master/res/drawable-hdpi/ic_mailbox_collapsed_holo_light.png

和一些示例用法可以在这里找到:

https://github.com/android/platform_packages_apps_email/blob/master/src/com/android/email/activity/MailboxFragmentAdapter.java

android – 单击上下文菜单

android – 单击上下文菜单

抱歉愚蠢的问题,但我应该更改/添加该代码 – 通过短暂单击列表视图中的项目来显示上下文菜单?
public class MyActivity extends ListActivity implements AdapterView.OnItemClickListener {
    static final String[] COUNTRIES = new String[]{
            "Afghanistan","Albania","Algeria","American Samoa","Andorra","Angola","Anguilla","Antarctica"
    };

    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setlistadapter(new ArrayAdapter<String>(this,R.layout.list_item,COUNTRIES));

        ListView lv = getListView();
        lv.setTextFilterEnabled(true);

        lv.setonItemClickListener(this);
    }


    public void onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo) {
        Log.e("sdklfjsdkljfl"," <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ");
        menu.setHeaderTitle("HELLO");

    }

    public void onItemClick(AdapterView<?> adapterView,View view,int i,long l) {
        Log.e("kjhasjkdhkas","sdkhjkhskaf");
        this.openContextMenu(view);
    }
}

解决方法

这里发布的其他解决方案对我不起作用,因为我使用的是ListFragment.但是,以下解决方案似乎对ListFragment和ListActivity(或者通常只是任何旧的listview)都很有效:
public void onListItemClick(ListView l,int position,long id){
  l.showContextMenuForChild(v);   
}

它更加简单和优雅.实际上,这实际上是ListView类本身如何通过长按来启动上下文菜单.

android – 在屏幕旋转后保持上下文菜单

android – 在屏幕旋转后保持上下文菜单

我有一个活动就是onCreate方法:

registerForContextMenu(theView);

并在onCreateContextMenu中:

super.onCreateContextMenu(menu, v, menuInfo);
menu.add(blablabla);

这很好用,但问题是当屏幕旋转时上下文菜单消失.
如何解决这个问题?

谢谢阅读!

解决方法:

这是解决方案:

contextMenu消失了,因为在默认情况下旋转android调用destroy()然后onCreate()但是:

如果你不希望Android通过正常的活动破坏和重新创建过程;相反,您想要自己处理重新创建视图,您可以在AndroidManifest.xml中的元素上使用android:configChanges属性.

<activity
    android:name=".SmsPopupActivity"
    android:theme="@android:style/Theme.Dialog"
    android:launchMode="singleTask"
    android:configChanges="orientation|keyboardHidden"
    android:taskAffinity="net.everythingandroid.smspopup.popup">
</activity>

这样,当我的手机旋转时,我的contextMenu没有关闭,因为没有调用onCreate()方法.

也可以看看:

> Developing Orientation-Aware Android Applications
> activity-restart-on-rotation-android

今天关于单击android中的Menu按钮打开上下文菜单android menu点击事件的讲解已经结束,谢谢您的阅读,如果想了解更多关于android ContextMenu 上下文菜单示例、Android ICS上下文菜单替换、android – 单击上下文菜单、android – 在屏幕旋转后保持上下文菜单的相关知识,请在本站搜索。

本文标签: