これはAPI4(テストされていないYMMV)まで機能するはずです。たとえば:あなたはActionBarSherlockを使用している場合
、あなたはIcsListPopupWindow
クラスを使用することができます。 onCreateでいくつかのプロパティを設定します。 ArrayAdapterもサブクラス化する必要があります。 onCreate()内
:あなたのフラグメント/アクティビティ内
mPopupMenu = new IcsListPopupWindow(getContext());
mAdapter = new PopupMenuAdapter(this, android.R.layout.simple_list_item_1, yourArrayOfPopupMenuItems);
mPopupMenu.setAdapter(mAdapter);
mPopupMenu.setModal(true);
mPopupMenu.setOnItemClickListener(this);
mPopupMenu.setOnDismissListener(this); // only if you need it
内部クラス:あなたが必要なときはいつでも
private class PopupMenuAdapter extends ArrayAdapter<PopupMenuItem> {
Context context;
int layoutResourceId;
PopupMenuItem data[] = null;
public PopupMenuAdapter(Context context, int layoutResourceId, PopupMenuItem[] data) {
super(context, layoutResourceId, data);
this.layoutResourceId = layoutResourceId;
this.context = context;
this.data = data;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
// initialize a view first
if (view == null) {
LayoutInflater inflater = ((Activity)context).getLayoutInflater();
view = inflater.inflate(layoutResourceId, parent, false);
}
PopupMenuItem pItem = data[position];
TextView text = (TextView)view.findViewById(android.R.id.text1);
text.setText(pItem.textResId);
text.setCompoundDrawablesWithIntrinsicBounds(pItem.iconResId, 0, 0, 0);
return view;
}
}
// ... PopupMenuItem is just a container
private static class PopupMenuItem {
public int iconResId;
public int textResId;
public PopupMenuItem(int iconResId, int textResId) {
this.iconResId = iconResId;
this.textResId = textResId;
}
}
は(例えばAA View.OnClickListener
のように)、それを表示します
mPopupMenu.setContentWidth(getActivity().getWindowManager().getDefaultDisplay().getWidth()/2);
PopupAdapter.notifyDataSetChanged(); // if you change anything
mPopupMenu.setAnchorView(yourAnchorView);
mPopupMenu.show();
あなたOnItemClickListenerで
mPopupMenu.dismiss()
を呼び出すようにしてください!
希望すると便利です。そしてABSのジェイクウォートンに感謝します!
ありがとう、面白いです。正確には私が探しているものではありません(私はアイコンがたくさんあるので、スクロールバーのある垂直リストを好むでしょう)が、私はそれを変更できると確信しています。見ています。 – Guillaume
実際には縦型レイアウトの例がありますので、ちょうど私のために働くかもしれません;) – Guillaume
私はこのことからインスピレーションを受けて、それは完全に動作します。また、非常に柔軟でカスタマイズ可能ですが、私はそれが大好きです、リンクのおかげで再び。 – Guillaume