2012-02-14 15 views
14

開発中Android 2.1 API 7アプリ。私もActionbarSherlockライブラリを使用してアクションバーを実装しています。Android 2.1 API 7のポップアップメニュー

ここでは、API 11+のみがサポートするPopupMenuを実装する必要があります。

PopupMenuをAndroid 2.1 API 7に実装するにはどうすればよいですか?

+1

私は似たようなことをしています! http://stackoverflow.com/questions/16621070/get-context-of-popupmenu-like-contextmenu – toobsco42

+0

この事前に質問されている質問を確認してください:[Pre-HoneycombのPopupMenuに適切な代替](http://stackoverflow.com/questions/9878916/pre-honeycombのための適切な代替のポップアップメニュー)これは概念を手伝ってくれます。 –

+0

[HoloEverywhere](https://github.com/Prototik/HoloEverywhere)の使用はどうですか? – azizbekian

答えて

1

私はこのような問題に悩まされていました。私自身が発見した唯一の解決策は、android 11d以降のリストダイアログをandroid sdk < 11とListPopupで使用することでした。

+0

これは理論的には以前のAPIバージョンでPopupMenusを許可するHoloEverywhereのようなソリューションを発見した後でさえ、私が最後に解決した解決策です。それはあまりにも少ないオーバーヘッドです! – andygeers

0

その可能なインポートあなたのコードに特定のAPIファイルがあります。私はEclipseがあなたのためにやってくれると思います。コードを書いてください。

1

あなたはHoloEveryWhereを使うことができ、それはアンドロイド4.1から2.1以上のHoloテーマをもたらす。

+0

それが誰かを助ける場合:私はHoloEverywhereルートを試しました。バイナリにかなり大きな設定コストとサイズオーバーヘッドがあり、ちょっとした方法です。 ListViewActivityかsomesuchを代わりに使うことができるかどうかにかかわらず、API v7でPopupMenuが本当に必要かどうかを検討したいかもしれません。 – andygeers

0

SherlockDialogFragmentを拡張するListDialogFragmentを作成し、独自のListenerインターフェイスを作成して、選択イベントを処理することができます。

public class ListDialogFragment extends SherlockDialogFragment { 

private String[] mValues; 

public interface ListDialogListener { 
    void onFinishListDialog(int selectedIndex, String tag); 
} 

private ListDialogFragment(String[] values) { 
    mValues = values; 
} 

public static ListDialogFragment newInstance(int index, String[] values) { 
    ListDialogFragment fragment = new ListDialogFragment(values); 

    // Supply index input as an argument. 
    Bundle args = new Bundle(); 
    args.putInt("index", index); 
    fragment.setArguments(args); 

    return fragment; 
} 

public int getSelectedIndex() { 
    return getArguments().getInt("index", 0); 
} 

} 
4

AndroidサポートV7ライブラリを使用してください。
android.support.v7.widget.PopupMenu

関連する問題