2017-09-14 28 views
3

如何顯示Listview上的每個項目點擊事件旁邊的彈出式菜單?如何顯示Listview上的每個項目點擊事件旁邊的彈出式菜單?

這是我的代碼。我想在項目點擊的附近顯示彈出式菜單。但它只顯示在底部。所以幫助我顯示彈出菜單附近的列表項被點擊。謝謝 。

package saro.example.com.task2_listview; 

    import android.app.Dialog; 
    import android.content.Context; 
    import android.content.DialogInterface; 
    import android.os.Build; 
    import android.support.annotation.RequiresApi; 
    import android.support.v7.app.AlertDialog; 
    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 

    import android.view.ContextMenu; 
    import android.view.Gravity; 
    import android.view.LayoutInflater; 
    import android.view.Menu; 
    import android.view.View; 
    import android.view.ViewGroup; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.ListView; 
    import android.widget.ListAdapter; 
    import android.widget.PopupWindow; 
    import android.widget.TextView; 
    import android.content.Context; 
    import android.widget.Toast; 
    import android.widget.PopupMenu; 

    public class MainActivity extends AppCompatActivity { 
     ListView list; 
     @Override 
     protected void onCreate(final Bundle savedInstanceState) { 
      String[] mobileArray = {"Android", "IPhone", "WindowsMobile", "Blackberry", 
        "WebOS", "Ubuntu", "Windows7", "Max OS X","Android", "IPhone", "WindowsMobile", "Blackberry"}; 

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

      ArrayAdapter adapter = new ArrayAdapter<String>(this, 
        R.layout.activity_listview, mobileArray); 

      list = (ListView) findViewById(R.id.mobile_list); 
      list.setAdapter(adapter); 

      list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

        int pos = parent.getPositionForView(v); 
        Toast.makeText(getApplicationContext(),pos+"",Toast.LENGTH_SHORT).show(); 

        PopupMenu popup = new PopupMenu(MainActivity.this, list); 
        popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu()); 
    //   
        popup.show(); 

       } 

      }); 
     } 
    } 

在此先感謝。

回答

1

試試這個只是通過適配器視圖v insted的的list的觀點在彈出菜單中像下面的代碼

使用本PopupMenu popup = new PopupMenu(MainActivity.this, v);

insted的的PopupMenu popup = new PopupMenu(MainActivity.this, list);

代碼

list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

       public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 

        int pos = parent.getPositionForView(v); 
        Toast.makeText(getApplicationContext(),pos+"",Toast.LENGTH_SHORT).show(); 

        PopupMenu popup = new PopupMenu(MainActivity.this, v); 
        popup.getMenuInflater().inflate(R.menu.popup_menu, popup.getMenu()); 
    //   
        popup.show(); 

       } 

      }); 
+0

謝謝兄弟。它工作正常。 – Saravana

+0

最受歡迎@Saravana你可以接受ans的一個,所以它也可以幫助其他人 –

2

PopupMenu (Context context, View anchor)

錨查看:此彈出錨視圖。如果有空間,則爲The popup will appear below the anchor;如果沒有,則在空間上方。

不是傳遞列表中參考使用v

PopupMenu popup = new PopupMenu(MainActivity.this, v); 

因爲v這裏是視圖

被點擊的適配器視圖中的視圖(這將是提供一個視圖 適配器)

+0

謝謝兄弟。有用。 – Saravana

+0

只是爲了信息,我看你的時間框架上懸停,我發佈這個答案第一休息是您接受最有幫助的答案,快樂編碼的選擇 –

相關問題