Хорошо, так что это можно сделать с помощью ListPopupWindow (согласно документам) из следующих шагов:
Шаг 1: создание класса модели
public class Item {
private String title;
private int imageRes;
public Item(String title, int imageRes) {
this.title = title;
this.imageRes = imageRes;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getImageRes() {
return imageRes;
}
public void setImageRes(int imageRes) {
this.imageRes = imageRes;
}
}
Шаг 2: создание адаптера
public class ListPopupWindowAdapter extends BaseAdapter {
LayoutInflater mLayoutInflater;
List<Item> mItemList;
public ListPopupWindowAdapter(Context context, List<Item> itemList) {
mLayoutInflater = LayoutInflater.from(context);
mItemList = itemList;
}
@Override
public int getCount() {
return mItemList.size();
}
@Override
public Item getItem(int i) {
return mItemList.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
convertView = mLayoutInflater.inflate(R.layout.detail_menu, null);
holder = new ViewHolder(convertView);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tvTitle.setText(getItem(position).getTitle());
holder.ivImage.setImageResource(getItem(position).getImageRes());
return convertView;
}
static class ViewHolder {
TextView tvTitle;
ImageView ivImage;
ViewHolder(View view) {
tvTitle = view.findViewById(R.id.text);
ivImage = view.findViewById(R.id.image);
}
}
}
Step3: your_item.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="50dp">
<ImageView
android:id="@+id/itemNav_img"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_centerVertical="true"
android:tint="#876"
android:layout_toRightOf="@+id/itemNav_txt"
android:src="@drawable/about" />
<TextView
android:id="@+id/itemNav_txt"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:textColor="#876"
android:text="Test" />
</RelativeLayout>
Наконец, шоу ListPopupWindow
private void showListPopupWindow(View anchor) {
final ListPopupWindow popupWindow = new ListPopupWindow(this);
List<Item> itemList = new ArrayList<>();
itemList.add(new Item("A", R.mipmap.ic_launcher));
itemList.add(new Item("B", R.mipmap.ic_launcher));
itemList.add(new Item("C", R.mipmap.ic_launcher));
ListAdapter adapter = new ListPopupWindowAdapter(this, itemList);
popupWindow.setAnchorView(anchor);
popupWindow.setAdapter(adapter);
popupWindow.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
popupWindow.dismiss();
}
});
popupWindow.show();
}
Вот и все, попробуйте и дайте мне знать.