为什么我的下拉菜单没有出现在 cardview 的圆点下面?
Why my dropdown menu is not coming under the dots on cardview?
Dropdown menu is not popped under the dots button on cardview
下面是我为此写的 classes
我创建了自定义菜单并将该菜单应用到 cardview 工具栏上(即垂直 3 个点)我不知道问题出在哪里下拉菜单的对齐方式已更改,我现在无法修复它
产品适配器 class 如下,具有所有功能:
public class ProdAdapter extends BaseAdapter {
private PopupMenu mPopupMenu;
Context context;
ArrayList<Model> models;
public ProdAdapter(Context context, ArrayList<Model> models) {
this.context = context;
this.models = models;
}
@Override
public int getCount() {
return models.size();
}
@Override
public Object getItem(int i) {
return models.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view == null){
view = View.inflate(context, R.layout.list_items,null);
}
ImageView images = (ImageView) view.findViewById(R.id.prodpic);
TextView prodname = (TextView) view.findViewById(R.id.prodname);
TextView prodbrand = (TextView) view.findViewById(R.id.prodbrand);
TextView prodprice = (TextView) view.findViewById(R.id.prodprice);
TextView prodstatus = (TextView) view.findViewById(R.id.status);
Toolbar prodmenu = (Toolbar) view.findViewById(R.id.prodmenu);
mPopupMenu = new PopupMenu(context, prodmenu);
MenuInflater menuInflater = mPopupMenu.getMenuInflater();
menuInflater.inflate(R.menu.product_menu, mPopupMenu.getMenu());
//mPopupMenu.inflate(R.menu.product_menu);
prodmenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupMenu.show();
}
});
mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.action_edit) {
//Intent intent = new Intent(MainActivity.this,SettingsActivity.class);
//startActivity(intent);
return true;
}
if (id == R.id.action_delete) {
//Intent intent = new Intent(MainActivity.this,SettingsActivity.class);
//startActivity(intent);
return true;
}
return true;
}
});
Model model = models.get(i);
images.setImageResource(model.getProd_img());
prodname.setText(model.getProd_name());
prodbrand.setText(model.getProd_brand());
prodprice.setText(model.getProd_price());
prodstatus.setText(model.getProd_status());
return view;
}
}
下面的菜单文件 prod_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_edit"
android:orderInCategory="100"
android:title="Edit"
app:showAsAction="never" />
<item
android:id="@+id/action_delete"
android:orderInCategory="100"
android:title="Delete"
app:showAsAction="never" />
</menu>
下面的卡片视图布局 list_items.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardUseCompatPadding="true"
android:layout_marginBottom="16dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:paddingBottom="4dp">
<ImageView
android:id="@+id/prodpic"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
card_view:srcCompat="@mipmap/dd_logo" />
<android.support.v7.widget.Toolbar
android:id="@+id/prodmenu"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/prodname"
android:layout_marginRight="10dp"
android:background="@drawable/dots" />
<TextView
android:id="@+id/prodname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_toEndOf="@+id/prodpic"
android:layout_toLeftOf="@+id/prodmenu"
android:layout_toRightOf="@+id/prodpic"
android:layout_toStartOf="@+id/prodmenu"
android:fontFamily="sans-serif-condensed"
android:text="Product Name"
android:textColor="#000"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/prodbrand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/prodname"
android:layout_alignStart="@+id/prodname"
android:layout_below="@+id/prodname"
android:layout_marginTop="10dp"
android:layout_toLeftOf="@+id/prodmenu"
android:layout_toStartOf="@+id/prodmenu"
android:fontFamily="sans-serif-condensed"
android:text="Product Brand"
android:textColor="#000"
android:typeface="normal" />
<TextView
android:id="@+id/prodprice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView4"
android:layout_alignBottom="@+id/textView4"
android:layout_toEndOf="@+id/textView4"
android:layout_toRightOf="@+id/textView4"
android:fontFamily="sans-serif-condensed"
android:paddingLeft="5dp"
android:text="Product Price"
android:textColor="@color/colorAccent"
android:typeface="normal" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/prodbrand"
android:layout_alignStart="@+id/prodbrand"
android:layout_below="@+id/prodbrand"
android:layout_marginTop="10dp"
android:fontFamily="sans-serif-condensed"
android:text="PKR"
android:textColor="@color/colorAccent"
android:typeface="normal" />
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/prodmenu"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/prodmenu"
android:fontFamily="sans-serif-condensed"
android:text="Status"
android:textColor="@color/cardview_dark_background"
android:typeface="normal" />
</RelativeLayout>
</android.support.v7.widget.CardView>
当前代码正在将菜单附加到 listView 的视图组根。您的弹出菜单需要在列表项单击时调用,并将列表项视图作为锚点。
public void showMenu(View v) {
PopupMenu popup = new PopupMenu(this, v);
// This activity implements OnMenuItemClickListener
popup.setOnMenuItemClickListener(this);
popup.inflate(R.menu.actions);
popup.show();
}
Dropdown menu is not popped under the dots button on cardview
下面是我为此写的 classes
我创建了自定义菜单并将该菜单应用到 cardview 工具栏上(即垂直 3 个点)我不知道问题出在哪里下拉菜单的对齐方式已更改,我现在无法修复它
产品适配器 class 如下,具有所有功能:
public class ProdAdapter extends BaseAdapter {
private PopupMenu mPopupMenu;
Context context;
ArrayList<Model> models;
public ProdAdapter(Context context, ArrayList<Model> models) {
this.context = context;
this.models = models;
}
@Override
public int getCount() {
return models.size();
}
@Override
public Object getItem(int i) {
return models.get(i);
}
@Override
public long getItemId(int i) {
return i;
}
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
if(view == null){
view = View.inflate(context, R.layout.list_items,null);
}
ImageView images = (ImageView) view.findViewById(R.id.prodpic);
TextView prodname = (TextView) view.findViewById(R.id.prodname);
TextView prodbrand = (TextView) view.findViewById(R.id.prodbrand);
TextView prodprice = (TextView) view.findViewById(R.id.prodprice);
TextView prodstatus = (TextView) view.findViewById(R.id.status);
Toolbar prodmenu = (Toolbar) view.findViewById(R.id.prodmenu);
mPopupMenu = new PopupMenu(context, prodmenu);
MenuInflater menuInflater = mPopupMenu.getMenuInflater();
menuInflater.inflate(R.menu.product_menu, mPopupMenu.getMenu());
//mPopupMenu.inflate(R.menu.product_menu);
prodmenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mPopupMenu.show();
}
});
mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
int id = menuItem.getItemId();
if (id == R.id.action_edit) {
//Intent intent = new Intent(MainActivity.this,SettingsActivity.class);
//startActivity(intent);
return true;
}
if (id == R.id.action_delete) {
//Intent intent = new Intent(MainActivity.this,SettingsActivity.class);
//startActivity(intent);
return true;
}
return true;
}
});
Model model = models.get(i);
images.setImageResource(model.getProd_img());
prodname.setText(model.getProd_name());
prodbrand.setText(model.getProd_brand());
prodprice.setText(model.getProd_price());
prodstatus.setText(model.getProd_status());
return view;
}
}
下面的菜单文件 prod_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/action_edit"
android:orderInCategory="100"
android:title="Edit"
app:showAsAction="never" />
<item
android:id="@+id/action_delete"
android:orderInCategory="100"
android:title="Delete"
app:showAsAction="never" />
</menu>
下面的卡片视图布局 list_items.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
card_view:cardUseCompatPadding="true"
android:layout_marginBottom="16dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:paddingBottom="4dp">
<ImageView
android:id="@+id/prodpic"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginTop="5dp"
card_view:srcCompat="@mipmap/dd_logo" />
<android.support.v7.widget.Toolbar
android:id="@+id/prodmenu"
android:layout_width="20dp"
android:layout_height="20dp"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignTop="@+id/prodname"
android:layout_marginRight="10dp"
android:background="@drawable/dots" />
<TextView
android:id="@+id/prodname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_toEndOf="@+id/prodpic"
android:layout_toLeftOf="@+id/prodmenu"
android:layout_toRightOf="@+id/prodpic"
android:layout_toStartOf="@+id/prodmenu"
android:fontFamily="sans-serif-condensed"
android:text="Product Name"
android:textColor="#000"
android:textStyle="bold"
android:typeface="normal" />
<TextView
android:id="@+id/prodbrand"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/prodname"
android:layout_alignStart="@+id/prodname"
android:layout_below="@+id/prodname"
android:layout_marginTop="10dp"
android:layout_toLeftOf="@+id/prodmenu"
android:layout_toStartOf="@+id/prodmenu"
android:fontFamily="sans-serif-condensed"
android:text="Product Brand"
android:textColor="#000"
android:typeface="normal" />
<TextView
android:id="@+id/prodprice"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView4"
android:layout_alignBottom="@+id/textView4"
android:layout_toEndOf="@+id/textView4"
android:layout_toRightOf="@+id/textView4"
android:fontFamily="sans-serif-condensed"
android:paddingLeft="5dp"
android:text="Product Price"
android:textColor="@color/colorAccent"
android:typeface="normal" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/prodbrand"
android:layout_alignStart="@+id/prodbrand"
android:layout_below="@+id/prodbrand"
android:layout_marginTop="10dp"
android:fontFamily="sans-serif-condensed"
android:text="PKR"
android:textColor="@color/colorAccent"
android:typeface="normal" />
<TextView
android:id="@+id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/prodmenu"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/prodmenu"
android:fontFamily="sans-serif-condensed"
android:text="Status"
android:textColor="@color/cardview_dark_background"
android:typeface="normal" />
</RelativeLayout>
</android.support.v7.widget.CardView>
当前代码正在将菜单附加到 listView 的视图组根。您的弹出菜单需要在列表项单击时调用,并将列表项视图作为锚点。
public void showMenu(View v) {
PopupMenu popup = new PopupMenu(this, v);
// This activity implements OnMenuItemClickListener
popup.setOnMenuItemClickListener(this);
popup.inflate(R.menu.actions);
popup.show();
}