Is it possible to use the ActionBarSherlock style for a native TabWidget?

I am wondering if it is possible to apply the ActionBarSherlock (v4.2.0) TabWidget theme in the native TabWidget? This way it will look like Holo on pre ICS androids. If you know how, please share.

All I found is: https://gist.github.com/1126843 , but it does not seem to work anymore.

Standard xml layout:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" > </TabWidget> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </LinearLayout> </TabHost> </LinearLayout> 
+6
source share
1 answer

I found some solution myself. These are not pure ABS resources, but use minimal additional things:

Almost the same as the ABS selector except

 <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/abs__ab_transparent_light_holo" /> 

tab_indicator_compat_holo.xml

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <!-- Non focused states --> <item android:state_focused="false" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/abs__ab_transparent_light_holo" /> <item android:state_focused="false" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/abs__tab_selected_holo" /> <!-- Focused states --> <item android:state_focused="true" android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/abs__list_focused_holo" /> <item android:state_focused="true" android:state_selected="true" android:state_pressed="false" android:drawable="@drawable/abs__tab_selected_focused_holo" /> <!-- Pressed --> <!-- Non focused states --> <item android:state_focused="false" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/abs__list_pressed_holo_dark" /> <item android:state_focused="false" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/abs__tab_selected_pressed_holo" /> <!-- Focused states --> <item android:state_focused="true" android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/abs__tab_unselected_pressed_holo" /> <item android:state_focused="true" android:state_selected="true" android:state_pressed="true" android:drawable="@drawable/abs__tab_selected_pressed_holo" /> 

Activities

 private void initTabs(){ TabHost tabHost = (TabHost)getView().findViewById(android.R.id.tabhost); tabHost.setup(); TabSpec podcasts_all = tabHost.newTabSpec("tab1"); TabSpec podcasts_downloaded = tabHost.newTabSpec("tab2"); TabSpec podcasts_favorite = tabHost.newTabSpec("tab3"); if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){ //set divider drawable tabHost.getTabWidget().setDividerDrawable(com.actionbarsherlock.R.drawable.abs__list_divider_holo_light); //set tab titles with custom view podcasts_all.setIndicator(customTabTextView(getSherlockActivity().getString(R.string.PodcastManager_All_Title))); podcasts_downloaded.setIndicator(customTabTextView(getSherlockActivity().getString( R.string.PodcastManager_Downloaded_Title))); podcasts_favorite.setIndicator(customTabTextView(getSherlockActivity().getString( R.string.PodcastManager_Favorite_Title))); }else{ //set tab titles podcasts_all.setIndicator(getSherlockActivity().getString(R.string.PodcastManager_All_Title)); podcasts_downloaded.setIndicator(getSherlockActivity().getString( R.string.PodcastManager_Downloaded_Title)); podcasts_favorite.setIndicator(getSherlockActivity().getString(R.string.PodcastManager_Favorite_Title)); } tabHost.addTab(podcasts_all); tabHost.addTab(podcasts_downloaded); tabHost.addTab(podcasts_favorite); //fill background with selector drawable if(Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB){ setTabsBackground(tabHost); } } private View customTabTextView(String text){ TextView txtTab = new TextView(getActivity()); txtTab.setText(text.toUpperCase()); txtTab.setPadding(0, 5, 0, 0); txtTab.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12); txtTab.setTextColor(Color.DKGRAY); txtTab.setGravity(Gravity.CENTER); txtTab.setTypeface(Typeface.MONOSPACE, Typeface.BOLD); txtTab.setHeight(34); return txtTab; } private void setTabsBackground(TabHost tabHost) { View v; int count = tabHost.getTabWidget().getTabCount(); for (int i = 0; i < count; i++) { v = tabHost.getTabWidget().getChildTabViewAt(i); v.setBackgroundResource(R.drawable.tab_indicator_compat_holo); ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); //Fix margins in 2.x, by default there is -2 params.setMargins(0, 0, 0, 0); } } 
+3
source

All Articles