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 changeview
's background dynamically, problemview
'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 :
Comments
Post a Comment