Android将自定义对话框绑定到项目(如上下文菜单)

时间:2015-07-07 13:23:49

标签: android dialog android-contextmenu

我已创建自定义对话框,并希望将其绑定到我的textview 当我点击我的文本视图时,我希望此对话框的行为类似于上下文菜单。

换句话说,我不希望此对话框出现在屏幕的中央,而是出现在我的textview附近。


当然,我可以计算出这个对话框所需的位置,但就我而言,它并不是那么好的方式。 我花了很多时间搜索,但遗憾的是没有结果。 有一些好的解决方案吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

最后我发现android中有PopupMenu,这肯定会涵盖这个问题 Example用法:

1.在xml中创建菜单:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/item_movies"
        android:showAsAction="ifRoom|withText"
        android:title="Movies"
        android:visible="true"/>
    <item
        android:id="@+id/item_music"
        android:showAsAction="ifRoom|withText"
        android:title="Music"
        android:visible="true"/>
    <item
        android:id="@+id/item_comedy"
        android:showAsAction="ifRoom|withText"
        android:title="Comedy"
        android:visible="true"/>

</menu>

2。 Activity的基本实现:

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.btn_click).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                PopupMenu popupMenu = new PopupMenu(PopMenuActivity.this, view);
                popupMenu.setOnMenuItemClickListener(PopMenuActivity.this);
                popupMenu.inflate(R.menu.popup_menu);
                popupMenu.show();
            }
        });
    }

    public boolean onMenuItemClick(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.item_comedy:
            Toast.makeText(this, "Comedy Clicked", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.item_movies:
            Toast.makeText(this, "Movies Clicked", Toast.LENGTH_SHORT).show();
            return true;
        case R.id.item_music:
            Toast.makeText(this, "Music Clicked", Toast.LENGTH_SHORT).show();
            return true;        
        }
    }

3。结果是: enter image description here

这就是我要找的东西。