Android Layout With Action Bar And Tabs
Solution 1:
You have two options:
- 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
Be careful not to overload your users. Usually two types of navigation can be confusing.
Solution 2:
For the action items, if you are using fragments for your different "screens" then they can register to supply action items with setHasOptionsMenu(true);
and define their actions by overriding onCreateOptionsMenu(Menu menu, MenuInflater inflater)
. So, a good rule of design, if you can't explain it simply, you're probably doing something wrong and should change the design.
It also might be a misuse of Android design to diverge too far from the action bar pattern, meaning you have something that looks like an ActionBar with navigation, but really you have some other thing that you have made up yourself. If this is required, then you should not make something that looks like an action bar with navigation, because users will expect certain behavior and get a different response (confusion).
Finally, with what you describe, it seems that the Tabs drive the list navigation, yet the list navigation has visual precedence (being above and essentially containing the tabs). So if the tabs are consistent through selections of the list navigation, but the list changes based on selections of the tab navigation, it is represented clearer by having the tabs have visual precedence over the list navigation. So, if you keep both navigation I would reverse their order. Maybe try list navigation with a view pager instead of the list navigation. Jake has a great library for view pager too http://viewpagerindicator.com/
Solution 3:
I achieved this by Setting the tab navigation in action bar
and Setting Spinner in Menu for navigation list
. I would explain the second part as the first one is trivial.
Define Spinner
in action_bar.xml
:
<item
android:id="@+id/menu_test_spinner"
android:actionViewClass="android.widget.Spinner"
android:showAsAction="always"/>
Setup and bind data in Spinner
in the activity:
@OverridepublicbooleanonCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.action_bar, menu);
MenuItemtestSpinner= menu.findItem( R.id.menu_test_spinner );
setupTestSpinner(testSpinner);
returntrue;
}
privatevoidsetupTestSpinner(MenuItem item) {
Viewview= item.getActionView();
if (view instanceof Spinner) {
Spinnerspinner= (Spinner) view;
spinner.setAdapter(ArrayAdapter.createFromResource(this,
R.array.test,
android.R.layout.simple_spinner_dropdown_item));
spinner.setOnItemSelectedListener(newOnItemSelectedListener() {
@OverridepublicvoidonItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
//Do something on item selection
}
@OverridepublicvoidonNothingSelected(AdapterView<?> arg0) {
}
});
}
}
Now, override the method which would respond to tab changes, and change the navigation list items in Spinner.
Post a Comment for "Android Layout With Action Bar And Tabs"