如何在RelativeLayout上创建长按菜单?

时间:2017-07-04 06:48:34

标签: java android

我在“ MainActivity.java ”中动态创建了50个相对布局。

public class MainActivity extends AppCompatActivity  {
   @Override
   protected void onCreate(Bundle savedInstanceState) {
     RelativeLayout big=new RelativeLayout(this);
     RelativeLayout mini;
     setContentView(big);
     for(int i=0; i<50; i++)
     {
         //just a sample example. Accept that the code is completely correct.

         mini=new RelativeLayout(this);
         big.addView(mini);
     }
  }
}

现在,我想,当长按每个“迷你”时,会出现一个弹出或上下文菜单,其中包含两个选项(1.Open和2.Hide)。这个,打开/隐藏动作将由我在选择一个时完成。

我搜索了互联网并找到了一些建议,可以在菜单directiory中创建 *。xml ,并使用 onCreateContextMenu 事件附加到 MainActivity.java

但是,我不明白。因为我是adnroid的新手,所以请长时间按下带有说明的视图(例如“将 menu_all.xml 添加到菜单目录”,以创建上下文菜单的完整代码,“创建新的。* java 文件”等。)

N.B。我想在API 19上构建的应用程序。

提前致谢。

1 个答案:

答案 0 :(得分:0)

您可以使用

registerForContextMenu(mini); 

此函数将视图作为参数并为您生成上下文菜单。

覆盖您活动的onCreateContextMenu函数并执行您想要执行的任何操作。

这是一个示例代码

public class MainActivity extends Activity {  
    ListView listView1;  
    String contacts[]={"Ajay","Sachin","Sumit","Tarun","Yogesh"};  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        listView1=(ListView)findViewById(R.id.listView1);  
        ArrayAdapter<String> adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,contacts);  
        listView1.setAdapter(adapter);  
        // Register the ListView  for Context menu  
        registerForContextMenu(listView1);  
    }  
    @Override   
    public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)  
    {  
            super.onCreateContextMenu(menu, v, menuInfo);  
            menu.setHeaderTitle("Select The Action");    
            menu.add(0, v.getId(), 0, "Call");//groupId, itemId, order, title   
            menu.add(0, v.getId(), 0, "SMS");   
    }   
    @Override    
    public boolean onContextItemSelected(MenuItem item){    
            if(item.getTitle()=="Call"){  
                Toast.makeText(getApplicationContext(),"calling code",Toast.LENGTH_LONG).show();  
            }    
            else if(item.getTitle()=="SMS"){  
                Toast.makeText(getApplicationContext(),"sending sms code",Toast.LENGTH_LONG).show();  
            }else{  
               return false;  
            }    
          return true;    
      }    
    }