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; 
    } 
} 
    } 

, что я хочу сделать, это добавить еще один выпадающий список в той же панели действий в непосредственной близости от уже существующего выпадающего меню таким образом, что на пользователе выбор Я мог бы перерисовать текущий фрагмент в Focus (который будет зависеть от первого Spinner или выпадающего меню) с небольшими изменениями, например, для сортировки строкового массива в текущем фрагменте в фокусе.

Некоторые рекомендации и помощь будут высоко оценены.

ответ

1

Я бы посоветовал это сделать, поскольку панель действий является стандартным шаблоном проектирования в Android, и ее настройка создает несоответствия между приложениями, которые могут запутать/расстроить пользователей. Однако я иногда понимаю, что вы вынуждены делать это по разным причинам.

Так что вы можете создать настраиваемый вид для панели действий. Это позволяет вам проектировать его в основном, как вы хотите. Вот vogella учебник, который объясняет, как:

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

В основном вы создаете настраиваемое представление в XML затем добавить, что в панели действий, используя либо код или стиль темы.

Надеюсь, что это поможет.

+0

Да, его большая работа, но мой единственный вариант - использовать пользовательский вид для ActionBar. –

Смежные вопросы