I want get the effects like this picture. I am using Action bar Sherlock for backward compatibility.
I am use NAVIGATION_MODE_TABS mode in action bar. I follow this blog to achieve below screen. My code is here.
HomeActivity extends SherlockFragmentActivity
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);
setTitle(R.string.app_name);
mViewPager = (ViewPager) findViewById(R.id.pager);
// Add the tabs
mTabsAdapter = new TabsAdapter(this, actionBar, mViewPager);
mTabsAdapter.addTab(actionBar.newTab().setText("General"),
GeneralFragment.class, null);
mTabsAdapter.addTab(actionBar.newTab().setText("Memory"),
MemoryFragment.class, null);
// more tabs here; seems no need those
if (savedInstanceState != null) {
actionBar.setSelectedNavigationItem(savedInstanceState
.getInt("tab"));
}
int titleId = Resources.getSystem().getIdentifier("action_bar_title",
"id", "android");
// If you're using sherlock, in older versions of android you are not
// supposed to get a reference to android.R.id.action_bar_title, So
// here's little hack for that.
if (titleId == 0) {
titleId = com.actionbarsherlock.R.id.abs__action_bar_title;
}
View titleView = findViewById(titleId);
// attach listener to this spinnerView for handling spinner selection
// change
spinnerView = (Spinner) getLayoutInflater().inflate(
R.layout.spinner_layout, null);
//
// source of ViewGroupUtils class is given at the end of this post.
ViewGroupUtils.replaceView(titleView, spinnerView);
}
I manage to build this .
How i build my desired screen in ActionbarSherlock? Any link or suggestion will be greatly appreciated .
Edited: My ViewGroupUtils class `public class ViewGroupUtils {
public static ViewGroup getParent(View view) {
return (ViewGroup) view.getParent();
}
public static void removeView(View view) {
ViewGroup parent = getParent(view);
if (parent != null) {
parent.removeView(view);
}
}
public static void replaceView(View currentView, View newView) {
ViewGroup parent = getParent(currentView);
if (parent == null) {
return;
}
final int index = parent.indexOfChild(currentView);
removeView(currentView);
removeView(newView);
parent.addView(newView, index);
}
} `
Just change your menu XML with this
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/action_share"
android:icon="@android:drawable/ic_menu_share"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="Share"/>
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
android:orderInCategory="100"
android:showAsAction="ifRoom"
android:title="Search"/>
<item
android:id="@+id/more"
android:orderInCategory="100"
android:icon="@android:drawable/ic_menu_more"
android:showAsAction="always"
android:title="">
<menu>
<item
android:id="@+id/action_call"
android:icon="@android:drawable/ic_menu_call"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Call"/>
<item
android:id="@+id/action_camera"
android:icon="@android:drawable/ic_menu_camera"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Camera"/>
<item
android:id="@+id/action_compass"
android:icon="@android:drawable/ic_menu_compass"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Compass"/>
<item
android:id="@+id/action_help"
android:icon="@android:drawable/ic_menu_help"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Help"/>
</menu>
</item>
No need to change in your Java file. Output is....