Я хочу создать всплывающее окно, подобное этому при нажатии на 3 точки, открывается два варианта редактирования и удаления. Но я сталкиваюсь с проблемами в попытке установить это. Когда я нажимаю 3 точки, всплывающее окно появляется внизу. хотя он должен появиться рядом с тремя точками.Включить параметры меню на android
<?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/edit_post"
android:orderInCategory="100"
android:title="Edit"/>
<item
android:id="@+id/Delete_post"
android:orderInCategory="100"
app:showAsAction="never"
android:title="Delete"/>
</menu>
Java код: Код
private Button options = (Button) view.findViewById(R.id.OptionsButton);
options.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(activity, options);
popup.getMenuInflater().inflate(R.menu.options_popup, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if (id == R.id.edit_post) {
//editpost here
} else if (id == R.id.Delete_post) {
Toast.makeText(activity, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
//delete post here
}
return true;
}
});
popup.show();//showing popup menu
}
}); //closing the setOnClickListener method
адаптер:
public class profileadapter extends RecyclerView.Adapter<profileadapter.MyViewHolder> {
private List<ProfileModel> profileModelList;
private ProfileModel profileModel;
private Activity activity;
private Button options;
public profileadapter(Activity activity, List<ProfileModel> profileModelList) {
this.activity = activity;
this.profileModelList = profileModelList;
}
public class MyViewHolder extends RecyclerView.ViewHolder {
public TextView users_name, users_post_title, home_location, home_date, /*complaint_status, */
home_like_textview,
home_comment_textview, home_share_textview;
public ImageView complaint_posted;
public MyViewHolder(View view) {
super(view);
users_name = (TextView) view.findViewById(R.id.users_name);
users_post_title = (TextView) view.findViewById(R.id.users_post_title);
home_location = (TextView) (view).findViewById(R.id.home_location);
home_date = (TextView) (view).findViewById(R.id.home_date);
home_like_textview = (TextView) (view).findViewById(R.id.home_like_textview);
home_comment_textview = (TextView) (view).findViewById(R.id.home_comment_textview);
home_share_textview = (TextView) (view).findViewById(R.id.home_share_textview);
complaint_posted = (ImageView) (view).findViewById(R.id.complaint_posted);
options = (Button) view.findViewById(R.id.OptionsButton);
options.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(activity, options);
popup.getMenuInflater().inflate(R.menu.options_popup, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
int id = item.getItemId();
if (id == R.id.edit_post) {
//editpost here
} else if (id == R.id.Delete_post) {
Toast.makeText(activity, "You Clicked : " + item.getTitle(), Toast.LENGTH_SHORT).show();
//delete post here
}
return true;
}
});
popup.show();//showing popup menu
}
}); //closing the setOnClickListener method
complaint_posted.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, DetailPost.class);
activity.startActivity(intent);
}
});
}
}
@Override
public profileadapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(activity)
.inflate(R.layout.profile_cardview, parent, false);
return new profileadapter.MyViewHolder(itemView);
}
@Override
public void onBindViewHolder(profileadapter.MyViewHolder holder, int position) {
ProfileModel post = (profileModelList.get(position));
holder.users_name.setText(post.getUsers_email());
holder.users_post_title.setText(post.getPost_title());
holder.home_location.setText(post.getLocation());
holder.home_date.setText(String.valueOf(post.getPost_date()));
// Log.i("Date", post.getPost_date());
// holder.complaint_status.setText(post.getPost_status());
holder.home_like_textview.setText(String.valueOf(post.getPost_like()));
holder.home_comment_textview.setText(String.valueOf(post.getPost_comment()));
holder.home_share_textview.setText(String.valueOf(post.getPost_share()));
Log.i("position", String.valueOf(position));
holder.complaint_posted.setImageResource(post.getComplaint_posted());
// holder.home_users_image.setImageResource(post.getUsers_profile());
}
@Override
public int getItemCount() {
return profileModelList.size();
}
}
макет для всплывающих опций:
Похоже, он появляется рядом с тремя точками в нижней части изображения ... Показать код Java, пожалуйста –
@ cricket_007 отредактирован , Посмотрите на код Java. – Sara
Больше кода, пожалуйста. Кажется, вы используете адаптер CardView и список. Ваш код показывает меню, конечно, но какие кнопки меню настроек вы подключили слушателей кликов? –