2012-02-14 27 views
14

我正在開發Android 2.1 API 7應用程序。我也使用ActionbarSherlock庫來實現Action BarAndroid 2.1 API 7中的PopupMenu

現在,我需要實現PopupMenu,它只支持API 11+。

如何在Android 2.1 API 7中實現PopupMenu

+1

我在做類似的事情! http://stackoverflow.com/questions/16621070/get-context-of-popupmenu-like-contextmenu – toobsco42 2013-05-18 16:01:32

+0

請檢查這個預先問過的問題:[適用於前蜂窩PopupMenu的替代](http://stackoverflow.com/questions/9878916/appropriate-alternative-to-popupmen-for-pre-honeycomb)它會幫助你理解這個概念。 – 2012-08-10 19:08:08

+0

如何使用[HoloEverywhere](https://github.com/Prototik/HoloEverywhere)? – azizbekian 2013-06-14 06:22:39

回答

1

I'v被這樣的問題困住了,我唯一找到的解決方案是在Android sdk < 11和Android 11及更高版本中使用ListPopup。

+0

這是我最終解決的解決方案,即使在發現諸如HoloEverywhere之類的解決方案之後,理論上允許在較早的API版本中使用PopupMenus。這只是少開銷! – andygeers 2014-02-22 19:24:10

0

它的可能導入你的代碼中的特定API文件,我認爲eclipse會爲你做,只需編寫代碼,如果不是導入比谷歌導入API。

1

你可以使用HoloEveryWhere,它將Holo主題從android 4.1升級到2.1及以上版本。

+0

萬一它幫助別人:我嘗試了HoloEverywhere路線。這是一個大錘的方法,在二進制文件中有相當大的設置成本和大小開銷。您可能需要考慮是否真的需要API v7中的PopupMenu,而不管您是否可以使用ListViewActivity或其他類。 – andygeers 2014-02-22 19:23:20

0

您可以創建一個ListDialogFragment來擴展SherlockDialogFragment並創建您自己的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 Support V7 Library;
android.support.v7.widget.PopupMenu

相關問題