0

我有以下的代碼已經創建一個下拉菜單如何在ActionBar中創建輔助下拉列表?

public class MainActivity extends FragmentActivity implements 
    ActionBar.OnNavigationListener { 

private static final String STATE_SELECTED_NAVIGATION_ITEM = "selected_navigation_item"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // Set up the action bar to show a dropdown list. 
    final ActionBar actionBar = getActionBar(); 
    actionBar.setDisplayShowTitleEnabled(false); 
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
    actionBar.setDisplayShowHomeEnabled(false); 

    // Set up the dropdown list navigation in the action bar. 
    actionBar.setListNavigationCallbacks(
    // Specify a SpinnerAdapter to populate the dropdown list. 
      new ArrayAdapter<String>(actionBar.getThemedContext(), 
        android.R.layout.simple_list_item_1, 
        android.R.id.text1, new String[] { 
          getString(R.string.demo1), 
          getString(R.string.demo2), 
          getString(R.string.demo3)}), this); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    // Restore the previously serialized current dropdown position. 
    if (savedInstanceState.containsKey(STATE_SELECTED_NAVIGATION_ITEM)) { 
     getActionBar().setSelectedNavigationItem(
       savedInstanceState.getInt(STATE_SELECTED_NAVIGATION_ITEM)); 
    } 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    // Serialize the current dropdown position. 
    outState.putInt(STATE_SELECTED_NAVIGATION_ITEM, getActionBar() 
      .getSelectedNavigationIndex()); 
} 

@Override 
public boolean onNavigationItemSelected(int position, long id) { 
    // When the given dropdown item is selected, show its contents in the 
    // container view. 
    Fragment fragment = new MainFragmentSection(); 
    Bundle args = new Bundle(); 
    args.putInt(MainFragmentSection.ARG_SECTION_NUMBER, position + 1); 
    fragment.setArguments(args); 
    getSupportFragmentManager().beginTransaction() 
      .replace(R.id.container, fragment).commit(); 
    return true; 
} 
public static class MainFragmentSection extends Fragment { 
    public static final String ARG_SECTION_NUMBER = "section_number"; 
    public MainFragmentSection() { 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.main_fragment, 
       container, false); 
     TextView dummyTextView = (TextView) rootView 
       .findViewById(R.id.section_label); 
     dummyTextView.setText(Integer.toString(getArguments().getInt(
       ARG_SECTION_NUMBER))); 
     return rootView; 
    } 
} 
    } 

我想要做的是在同一個操作欄以這樣的方式添加旁邊的已經存在的下拉菜單中選擇另一個下拉列表中的用戶選擇我可以重繪焦點當前片段(其將依賴於在第一微調或下拉菜單)帶有一些小的變化,如用於排序在焦點當前片段視圖的字符串數組。

一些指導和幫助,我們將不勝感激。

回答

1

我會反對這項建議作爲操作欄是Android的一個標準設計模式和定製它跨越這可以混淆/挫敗的用戶應用程序創建的不一致。不過,我明白有時你會因各種原因被迫做這件事。

那麼,你所能做的就是爲您的操作欄自定義視圖。這可以讓你設計它主要是你想要的。這裏是一個vogella教程,說明如何:

http://www.vogella.com/articles/AndroidActionBar/article.html#menu_customviews

基本上你創建一個XML格式的自定義視圖,然後補充說,使用代碼或一個主題風格的操作欄。

希望有所幫助。

+0

是其大量的工作,但我唯一的選擇似乎是使用ActionBar的自定義視圖。 –