2016-01-11 26 views

Odpowiedz

2

Krok 1: Main.xml

Można użyć widoku listy lub innych listviews kompozytowe:

<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> 

Krok 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" /> 

Krok 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, 10); 
      listItem.setTextColor(Color.WHITE); 

      return listItem; 
     } 
    }; 

    return adapter; 
} 

}

Krok 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, View convertView, 
      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;   

    } 

Krok 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(); 


} 
3
It is better to use navigation drawer rather then menu list. In your case you have sub menus & you are working on it. So you can refer below link: 
http://www.karthikk.co.vu/2015/03/android-navigation-drawer-with-submenu.html 

And If you want exact above then you can refer below link for sub menus: 
https://www.packtpub.com/books/content/android-30-application-development-managing-menus 
+1

Chcę menu bocznego z pozycji menu głównego –

0

możesz użyć Dialog lub DialogFragment.

+2

Proszę, włożyć trochę wysiłku w swoją odpowiedź. –

+0

Przepraszam. tym razem byłem nowy w stosie i nie mogłem dodać komentarza. ta odpowiedź musi być komentarzem. Przepraszam! –

0

można użyć podmenu dla that.for tym celu po prostu trzeba dokonać menu zwyczaj link