Android-макет с панелью действий и вкладками

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

Я использую ActionBarSherlock для панели действий, и у меня уже есть вкладки, использующие TabHost и TabWidget с фрагментами, когда я нажимаю на вкладку, затем фрагмент изменяется, но это не совсем то, что я хочу, и я понятия не имею, что делать дальше. Не могли бы вы помочь мне?

Вот экран:

enter image description here

Когда я нажимаю на вкладку 1, список навигации на панели действий должен быть Tab1 List1, Tab1 List2 и т. Д. И должен отображаться при первом отображении по умолчанию из списка (например, сначала Tab1 List1) или последнем, выбранном пользовательским представлением из список навигации. Когда я нажимаю на вкладку 2, список должен быть Tab2 List1, Tab2 List2 и т. Д. И должен отображаться, например. Tab2 List2 view. и т.п. Так что каждая вкладка настраивает панель действий.

 prolink00714 июн. 2012 г., 15:29
Некоторые изображения того, что вы хотите, были бы очень полезны. Вы можете нарисовать их в краске или что-то. Затем просто опубликуйте их как фотографии в вашем ОП.

Ответы на вопрос(3)

Setting the tab navigation in action bar а такжеSetting Spinner in Menu for navigation list, Я бы объяснил вторую часть, поскольку первая тривиальна.

определятьSpinner вaction_bar.xml:

<item
    android:id="@+id/menu_test_spinner"
    android:actionViewClass="android.widget.Spinner"
    android:showAsAction="always"/>

Настройка и привязка данных вSpinner в деятельности:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.action_bar, menu);
    MenuItem testSpinner = menu.findItem( R.id.menu_test_spinner );
    setupTestSpinner(testSpinner);
    return true;
}

private void setupTestSpinner(MenuItem item) {
    View view = item.getActionView();
    if (view instanceof Spinner) {
        Spinner spinner = (Spinner) view;
        spinner.setAdapter(ArrayAdapter.createFromResource(this,
                R.array.test,
                android.R.layout.simple_spinner_dropdown_item));
        spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                //Do something on item selection
            }

            @Override
            public void onNothingSelected(AdapterView<?> arg0) {

            }
        });
    }
}

Теперь переопределите метод, который будет реагировать на изменения вкладок, и измените элементы списка навигации в Spinner.

если вы используете фрагменты для своих разных & quot; экранов & quot; затем они могут зарегистрироваться, чтобы снабжать предметами действияsetHasOptionsMenu(true); и определить свои действия, переопределивonCreateOptionsMenu(Menu menu, MenuInflater inflater), Итак, хорошее правило дизайна, если вы не можете объяснить это просто, вы, вероятно, делаете что-то не так и должны изменить дизайн.

Также может быть неправильное использование дизайна Android, чтобы отклониться слишком далеко от шаблона панели действий, что означает, что у вас есть нечто, похожее на ActionBar с навигацией, но на самом деле у вас есть кое-что другое, что вы создали сами. Если это требуется, то вы не должны создавать что-то, похожее на панель действий с навигацией, потому что пользователи будут ожидать определенного поведения и получат другой ответ (путаница).

Наконец, с тем, что вы описываете, кажется, что вкладки управляют навигацией по списку, но навигация по списку имеет визуальный приоритет (будучи выше и по существу содержит вкладки). Таким образом, если вкладки согласованы при выборе навигации по списку, но список изменяется в зависимости от выбора навигации по вкладкам, это представляется более понятным, если вкладки имеют визуальный приоритет над навигацией по списку. Итак, если вы сохраните обе навигации, я бы изменил их порядок. Возможно, попробуйте навигацию по списку с помощью пейджерного представления вместо навигации по списку. У Джейка есть отличная библиотека для просмотра пейджеровhttp://viewpagerindicator.com/

Use list navigation in the action bar and place a TabWidget at the top of your content view. Use tab navigation in the action bar and set a custom view with a Spinner

Будьте осторожны, чтобы не перегружать своих пользователей. Обычно два типа навигации могут сбивать с толку.

 Bartosz Bialecki15 июн. 2012 г., 09:35
Спасибо, Джейк, но я не уверен, что это именно то, чего я хочу. Я знаю, что это сложно, но я хотел бы иметь что-то вроде трех отдельных приложений электронной почты. Также, когда я щелкаю первую вкладку, у меня есть такая, как макет приложения электронной почты, когда вторая вкладка, секунды и т. Д. Я не уверен, правильно ли я это объясню.
 17 дек. 2013 г., 12:32
@ Джейк Можете ли вы помочь мне в этом ::stackoverflow.com/questions/20629665/… stackoverflow.com/questions/20606647/…

Ваш ответ на вопрос