gpt4 book ai didi

android - 如何将自定义布局传递给 PopupMenu?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:45:29 25 4
gpt4 key购买 nike

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

enter image description here

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

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>

我注意到您还想在文本旁边添加图标。可以在弹出菜单中添加图标。然而,使用弹出窗口是更好的方法。这是一个示例代码:

PopupWindow mypopupWindow;
setPopUpWindow();
btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mypopupWindow.showAsDropDown(v,-153,0);
//showAsDropDown(below which view you want to show as dropdown,horizontal position, vertical position)
}
}
});
}
private void setPopUpWindow() {
LayoutInflater inflater = (LayoutInflater)
getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(R.layout.popup, null);

Start=(RelativeLayout)view.findViewById(R.id.start_btn);
Pause=(RelativeLayout)view.findViewById(R.id.pause_btn);
Stop=(RelativeLayout)view.findViewById(R.id.stop_btn);

mypopupWindow = new PopupWindow(view,300, RelativeLayout.LayoutParams.WRAP_CONTENT, true);

弹窗布局

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

whitedrawable 可用于设置您选择的背景。您可以使用 9patch 来获得背景的阴影和圆角。

要关闭弹出窗口,请使用以下代码:

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

关于android - 如何将自定义布局传递给 PopupMenu?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49706495/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com