Android 如何将自定义布局传递到弹出菜单?

Android 如何将自定义布局传递到弹出菜单?,android,popupmenu,Android,Popupmenu,我想在android中自定义popupmenu,默认的弹出菜单提供了更多的空间,所以我试图更改弹出菜单中的自定义布局,但我不知道如何更改 注意:我想做这个小的弹出式设计,所以我使用默认的弹出式菜单,但我想定制它 findViewById(R.id.menuclick).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { PopupMe

我想在android中自定义
popupmenu
,默认的弹出菜单提供了更多的空间,所以我试图更改弹出菜单中的自定义布局,但我不知道如何更改

注意:我想做这个小的弹出式设计,所以我使用默认的弹出式菜单,但我想定制它

findViewById(R.id.menuclick).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        PopupMenu popupMenu = new PopupMenu(Sample1.this, view);
        popupMenu.setOnMenuItemClickListener(Sample1.this);
        popupMenu.inflate(R.layout.menus_layout);
        popupMenu.show();
    }
});

要从按钮
onClick
充气
popupMenu
,请使用以下代码

btn = (Button) findViewById(R.id.btn);   
btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popup = new PopupMenu(MainActivity.this, v);
            popup.getMenuInflater().inflate(R.menu.pop_up, popup.getMenu());

            popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                public boolean onMenuItemClick(MenuItem item) {
                    Toast.makeText(MainActivity.this, "Some Text" + item.getTitle(), Toast.LENGTH_SHORT).show();
                    return true;
                }
            });
            popup.show();//showing popup menu
        }
    });
编辑

要设置弹出菜单的样式,请添加以下样式

<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
        <item name="android:popupBackground">#ffffff</item>
    </style>
弹出式布局

<?xml version="1.0" encoding="utf-8"?>  
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
   android:orientation="vertical" android:layout_width="wrap_content"  
   android:background="@drawable/whitedrawable"  
   android:paddingRight="0dp"  
   android:layout_marginRight="0dp"  
   android:layout_height="wrap_content">  
   <RelativeLayout  
     android:id="@+id/btn1"  
     android:layout_width="wrap_content"  
     android:layout_height="wrap_content">  
     <ImageView  
       android:layout_centerHorizontal="true"  
       android:layout_centerVertical="true"  
       android:layout_alignParentLeft="true"  
       android:layout_width="wrap_content"  
       android:layout_height="wrap_content"  
       android:src="@drawable/startimg"  
       android:id="@+id/startimg"  
       android:paddingLeft="10dp"  
       android:paddingRight="10dp"  
       android:paddingTop="5dp"  
       android:paddingBottom="5dp"  
       />  
     <TextView  
       android:layout_centerHorizontal="true"  
       android:layout_centerVertical="true"  
       android:layout_width="wrap_content"  
       android:layout_height="wrap_content"  
       android:paddingRight="0dp"  
       android:text="Start"  
       android:layout_toRightOf="@+id/startimg"  
       />  
 <!-- Continue for other items-->
要使用“后退”按钮退出,请使用:

@Override
public void onBackPressed() {
    if(mypopupWindow.isShowing()) {
        mypopupWindow.dismiss();
        return;
    }
    super.onBackPressed();
}

那么你的问题到底是什么?是否需要用于设计或实现onClick for popupMenu的代码?是否可以在popupMenu中提供自定义布局,如果我使用alert dialog,弹出窗口将出现在中心,这就是我使用PopupMenu的原因。请查看该图像,并告诉我如何自定义PopupMenu或alertdialog这样的布局。为PopupMenu定义自定义布局是绝对可能的。您可以自定义弹出菜单以实现图像中的布局。是,如何在弹出菜单中放大该布局。弹出菜单。充气(右布局。弹出菜单);如果我给这样的显示问题,我想写点击功能也。我有这个代码我想膨胀自定义布局,上面的代码膨胀R.menu.popup,我问R.layout.popup你可以添加一些风格的弹出菜单,实现你的用户界面或创建弹出窗口。谢谢你的回答,工作正常,但如何关闭弹出窗口。由于“我的设计”中没有关闭选项(取决于您的UI/UX要求),您可以通过触摸弹出窗口外部或按“上一步”按钮来关闭弹出窗口。检查编辑后的答案。我的结论是;如果我们使用
parent=“@android:style/Widget.PopupMenu”
定义一个样式作为父级,我们将覆盖我们的PopupMenu的行为。我想现在清楚了。
mypopupWindow.getContentView().setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mypopupWindow.dismiss();
    }
});
@Override
public void onBackPressed() {
    if(mypopupWindow.isShowing()) {
        mypopupWindow.dismiss();
        return;
    }
    super.onBackPressed();
}