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

前端之家收集整理的这篇文章主要介绍了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相关文章