tôi đã thành công để thực hiện những gì tôi muốn bằng cách sử dụng @ câu trả lời Padma để tạo nền chỉ số tab của tôi : tôi cần 5 bộ chọn: xanh lục, vàng, xanh dương, cam và đỏ. Vì vậy, tôi đã tạo ra 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"/>
Tôi cũng đã tạo ra một layer-list
cho mỗi nền xml: 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>
Và cuối cùng, trong Java
, tôi chuyển nền động mua sử dụng chọn tab của custom view
và 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);
/* ... */
}
Bây giờ chúng ta hãy thêm một số ảnh chụp màn hình:

Nguồn
2013-08-28 15:03:59
Ru sử dụng nền bố cục gốc của bạn làm android: backgrund = "@ drawable/tab_indicator" http://stackoverflow.com/q/3725692/1012284 –
cố gắng sử dụng 'setLeftStripDrawable' và' setRightStripDrawable' –
@PadmaKumar, tôi đã thử , nhưng giới hạn tab lớn hơn bố cục gốc của tôi. tôi đã thử cũng thiết lập 'padding và marigin' tại' 0dp' nhưng không có gì. –