android 如何在customView中获得相同的MenuItem行为

nle07wnf  于 2023-05-27  发布在  Android
关注(0)|答案(2)|浏览(194)

我想有一个自定义视图上的图标(而不是在工具栏上),当点击有相同的下拉列表作为menuItem点击。
有什么想法吗?

cbjzeqam

cbjzeqam1#

创建一个xml文件在res->菜单中说popup.xml或任何你想要的名称
比如下面

<?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/menu1"
        android:icon="@android:drawable/ic_menu_search"
        android:title="menuItem1"
       />
    <item
        android:id="@+id/menu2"
        android:icon="@android:drawable/ic_menu_search"
        android:title="menuItem2"/>


</menu>

然后在你的activty中,点击你的动作栏对象,调用下面的代码

PopupMenu popup = new PopupMenu(this, view);
        popup.getMenuInflater().inflate(R.menu.popup, popup.getMenu());

        popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
            public boolean onMenuItemClick(MenuItem item) {
                if (item.getTitle().equals("menuItem1")) {
                    // handle MenuItem1
                } else if (item.getTitle().equals("menuItem2")) {
                    // handle MenuItem2
                }
                //......
                return true;
            }
        });

        popup.show();
7fhtutme

7fhtutme2#

你可以尝试使用下拉微调。你可以在任何地方使用它。
activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:padding="10dip"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content">
   
   <TextView
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_marginTop="10dip"
      android:text="Category:"
      android:layout_marginBottom="5dp"/>
      
   <Spinner
      android:id="@+id/spinner"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:prompt="@string/spinner_title"/>
      
</LinearLayout>

MainActivity.class

package com.example.spinner;

import java.util.ArrayList;
import java.util.List; 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
 
class MainActivity extends Activity implements OnItemSelectedListener{
   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);
      
      // Spinner element
      Spinner spinner = (Spinner) findViewById(R.id.spinner);
      
      // Spinner click listener
      spinner.setOnItemSelectedListener(this);
      
      // Spinner Drop down elements
      List<String> categories = new ArrayList<String>();
      categories.add("Automobile");
      categories.add("Business Services");
      categories.add("Computers");
      categories.add("Education");
      categories.add("Personal");
      categories.add("Travel");
      
      // Creating adapter for spinner
      ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, categories);
      
      // Drop down layout style - list view with radio button
      dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
      
      // attaching data adapter to spinner
      spinner.setAdapter(dataAdapter);
   }
   
   @Override
   public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
      // On selecting a spinner item
      String item = parent.getItemAtPosition(position).toString();
      
      // Showing selected spinner item
      Toast.makeText(parent.getContext(), "Selected: " + item, Toast.LENGTH_LONG).show();
   }
   public void onNothingSelected(AdapterView<?> arg0) {
      // TODO Auto-generated method stub
   }
}

相关问题