android – 如何创建弹出菜单作为另一个弹出菜单菜单项的子菜单

我想创建另一个弹出菜单菜单项的弹出菜单菜单.如下所示:

提前谢谢

解决方法

第1步:Main.xml

您可以使用列表视图或任何其他复合列表视图:

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:orientation="vertical"
    >
  <ListView
      android:id="@+id/listView1"
      android:layout_width="match_parent"
      android:layout_height="wrap_content" >
  </ListView>

  </LinearLayout>

第2步:listviewchild.xml

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_marginLeft="15dp"        
    android:layout_toRightOf="@+id/textview_name"
    android:src="@drawable/ic_launcher" />

第3步:

String popUpContents[];
PopupWindow popupWindowDogs;   
ListView listView1;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    listView1=(ListView)findViewById(R.id.listView1);
    listView1.setAdapter(new MyAddapter(MainActivity.this)); // binding the list view.
    /*
     * initialize pop up window items list
     */

    // add items on the array dynamically
    // format is Company Name:: ID
    List<String> dogsList = new ArrayList<String>();
    dogsList.add("Samsung");
    dogsList.add("Google");
    dogsList.add("Yahoo");
    dogsList.add("Microsoft");

    // convert to simple array
    popUpContents = new String[dogsList.size()];
    dogsList.toArray(popUpContents);

    /*
     * initialize pop up window
     */
    popupWindowDogs = popupWindowDogs();


}

/*
 * 
 */
public PopupWindow popupWindowDogs() {

    // initialize a pop up window type
    PopupWindow popupWindow = new PopupWindow(this);

    // the drop down list is a list view
    ListView listViewDogs = new ListView(this);

    // set our adapter and pass our pop up window contents
    listViewDogs.setAdapter(dogsAdapter(popUpContents));

    // set the item click listener
    listViewDogs.setonItemClickListener(new DogsDropdownOnItemClickListener());

    // some other visual settings
    popupWindow.setFocusable(true);
    popupWindow.setWidth(250);
    popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

    // set the list view as pop up window content
    popupWindow.setContentView(listViewDogs);

    return popupWindow;
}

/*
 * adapter where the list values will be set
 */
private ArrayAdapter<String> dogsAdapter(String dogsArray[]) {

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,dogsArray) {

        @Override
        public View getView(int position,View convertView,ViewGroup parent) {

            // setting the ID and text for every items in the list

            String text = getItem(position);               

            // visual settings for the list item
            TextView listItem = new TextView(MainActivity.this);

            listItem.setText(text);
            listItem.setTag(position);
            listItem.setTextSize(22);
            listItem.setPadding(10,10,10);
            listItem.setTextColor(Color.WHITE);

            return listItem;
        }
    };

    return adapter;
}

}

第4步:

Context rContext;
    private LayoutInflater rInflater;
    private Activity activity;

    public MyAddapter(Context c) {

        rInflater = LayoutInflater.from(c);

        rContext = c;

    }      

    public MyAddapter(Activity imagebinding) {
        // Todo Auto-generated constructor stub

        activity = imagebinding;        

        rContext = imagebinding;
        rInflater = LayoutInflater.from(imagebinding);
        rContext = imagebinding;
        rInflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);



    }

    @Override
    public int getCount() {
        // Todo Auto-generated method stub    


        return 10;
    }

    @Override
    public Object getItem(int arg0) {
        // Todo Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int position) {
        // Todo Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(final int position,ViewGroup parent) {
        // Todo Auto-generated method stub
        convertView = rInflater.inflate(R.layout.child,null);
        final MyDat mydat = new MyDat();    

        mydat.imageView1=(ImageView)convertView.findViewById(R.id.imageView1);
        mydat.imageView1.setonClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // Todo Auto-generated method stub
                popupWindowDogs.showAsDropDown(v,-5,0);

            }
        });

        return convertView;
    }

    class MyDat {        


        ImageView imageView1;           

    }

第5步:

@Override
public void onItemClick(AdapterView<?> arg0,View v,int arg2,long arg3) {

    // get the context and main activity to access variables
    Context mContext = v.getContext();
    MainActivity mainActivity = ((MainActivity) mContext);

    // add some animation when a list item was clicked
    Animation fadeInAnimation = AnimationUtils.loadAnimation(v.getContext(),android.R.anim.fade_in);
    fadeInAnimation.setDuration(10);
    v.startAnimation(fadeInAnimation);

    // dismiss the pop up
    mainActivity.popupWindowDogs.dismiss();

    // get the text and set it as the button text

    Toast.makeText(mContext,"Selected Positon is: " + arg2,100).show();


}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...