如何在 Item Click 事件中显示 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();
}
});
}
}
提前致谢。
最佳答案
来自 PopupMenu (Context context, View anchor)
anchor View: Anchor view for this popup.
The popup will appear below the anchor
if there is room, or above it if there is not.
使用 v
PopupMenu popup = new PopupMenu(MainActivity.this, v);
因为v
这里是 View
The view within the AdapterView that was clicked (this will be a view provided by the adapter)
关于android - 如何在项目单击事件的 ListView 附近显示弹出菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46210993/