android - Is it possible to change actionbar tab indicator programmatically -


how can change programmatically selected tab indicator of action bar ? have read tab styling, , tab.setcustomview() method, none of these helps :

  • with tab styles, can change indicator color, remain tabs (i want have indicator each tab).

  • with tab custom view, have used layout textview tab title, , view managing indicator color. in java change view's background dynamically, problem view's background doesn't match tabs bounds.

<textview     android:id="@+id/custom_tab_text"     android:layout_width="match_parent"     android:layout_height="match_parent"      android:layout_centerinparent="true"     android:layout_centerhorizontal="true"     android:gravity="center|center_horizontal"     android:textstyle="bold"/>  <view      android:id="@+id/custom_tab_view"     android:layout_width="match_parent"     android:layout_height="10dp"      android:layout_alignparentbottom="true"/> 

can tell me i'am wrong ? there way ? thanks

i have succeeded implement wanted using @padma's answer generate tab indicator backgrounds : needed 5 selectors : green, yellow, blue, orange , red. created 5 xml drawables (tabs_selector_red.xml, tabs_selector_blue.xml, etc...) :

tabs_selector_green.xml :

    <!-- non focused states --> <item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="false" android:state_pressed="false" android:state_selected="true"/>  <!-- focused states --> <item android:drawable="@android:color/transparent" android:state_focused="true" android:state_pressed="false" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="true" android:state_pressed="false" android:state_selected="true"/>  <!-- pressed --> <!-- non focused states --> <item android:drawable="@android:color/transparent" android:state_focused="false" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="false" android:state_pressed="true" android:state_selected="true"/>  <!-- focused states --> <item android:drawable="@android:color/transparent" android:state_focused="true" android:state_pressed="true" android:state_selected="false"/> <item android:drawable="@drawable/layer_bg_selected_tabs_green" android:state_focused="true" android:state_pressed="true" android:state_selected="true"/> 

i created layer-list each xml background : layer_bg_selected_tabs_green.xml

<item>     <shape android:shape="rectangle" >         <solid android:color="@color/tab_green" />          <padding android:bottom="5dp" />     </shape> </item> <item>     <shape android:shape="rectangle" >         <solid android:color="#ffffff" />     </shape> </item> 

and finally, in java, switch background dynamically buy using selected tab's custom view , index :

private static final int[] tabs_background = {         r.drawable.tabs_selector_orange, r.drawable.tabs_selector_green,         r.drawable.tabs_selector_red, r.drawable.tabs_selector_blue,         r.drawable.tabs_selector_yellow }; /* bla bla bla */ @override public void ontabselected(tab tab, fragmenttransaction ft) {     // todo auto-generated method stub     relativelayout tablayout = (relativelayout) tab.getcustomview();     tablayout.setbackgroundresource(tabs_background[tab.getposition()]);     tab.setcustomview(tablayout); /* ... */ } 

now let's add screenshots :

green blue red


Comments

Popular posts from this blog

design - Custom Styling Qt Quick Controls -

Unable to remove the www from url on https using .htaccess -