2013-07-27 24 views
15

Tôi rất mới cho android. Bây giờ tôi xây dựng một ứng dụng nhỏ.Làm cách nào để tùy chỉnh tab android hoặc thay đổi nền?

Tôi cần thay đổi giao diện mặc định của Android trong 2.2. Vì vậy, ở đây tôi cố gắng thay đổi nền của các tab. Bạn có thể giúp tôi làm điều đó không.

Tôi thích cách sử dụng xml/kiểu.

Đây là những gì tôi cần mà đầu ra thực tế.

Tabs

+0

http://stackoverflow.com/ câu hỏi/2099959/cách-làm-i-thay đổi-nền-của-một-android-tab-widget –

+0

Tôi đã thử liên kết thực tế do selva cung cấp. Nhưng không nhận được kết quả. Có thể đó là vấn đề của tôi. –

+0

@SibirajPR, Hãy xem tại đây, http://joshclemm.com/blog/?p=136 – yugidroid

Trả lời

43

Tab Máy chủ của bạn tập tin XML

TabHost

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <LinearLayout android:orientation="vertical" 
     android:layout_width="fill_parent" android:layout_height="fill_parent"> 

     <TabWidget android:id="@android:id/tabs" 
      android:layout_width="fill_parent" android:layout_height="wrap_content" /> 
     <FrameLayout android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     </FrameLayout> 

    </LinearLayout> 

</TabHost> 

trong Hoạt động chính của bạn

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    mTabHost = (TabHost) findViewById(android.R.id.tabhost); 

    setupTab(new TextView(this), "Tab 1"); 
    setupTab(new TextView(this), "Tab 2"); 
    setupTab(new TextView(this), "Tab 3"); 
} 

private void setupTab(final View view, final String tag) { 
    View tabview = createTabView(mTabHost.getContext(), tag); 
    TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() { 
     public View createTabContent(String tag) { 
      return view; 
     } 
    }); 
    mTabHost.addTab(setContent); 
} 

private static View createTabView(final Context context, final String text) { 
    View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null); 
    TextView tv = (TextView) view.findViewById(R.id.tabsText); 
    tv.setText(text); 
    return view; 
} 

CustomTabsLayout tabs_bg.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tabsLayout" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" android:background="@drawable/tab_bg_selector" 
    android:padding="10dip" android:gravity="center" android:orientation="vertical"> 

    <TextView android:id="@+id/tabsText" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:text="Title" 
     android:textSize="15dip" android:textColor="@drawable/tab_text_selector" /> 
</LinearLayout> 

tab_text_selector.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="true" android:color="@android:color/white" /> 
    <item android:state_focused="true" android:color="@android:color/white" /> 
    <item android:state_pressed="true" android:color="@android:color/white" /> 
    <item android:color="#f8f8f8" /> 
</selector> 

tab_bg_selector

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <!-- Active tab --> 
    <item android:state_selected="true" android:state_focused="false" 
     android:state_pressed="false" android:drawable="@drawable/tab_bg_selected" /> 
    <!-- Inactive tab --> 
    <item android:state_selected="false" android:state_focused="false" 
    android:state_pressed="false" android:drawable="@drawable/tab_bg_unselected" /> 
    <!-- Pressed tab --> 
    <item android:state_pressed="true" android:drawable="@android:color/transparent" /> 
    <!-- Selected tab (using d-pad) --> 
    <item android:state_focused="true" android:state_selected="true" 
    android:state_pressed="false" android:drawable="@android:color/transparent" /> 
</selector> 

tab_bg_selected.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient android:startColor="#A8A8A8" android:centerColor="#7F7F7F" 
     android:endColor="#696969" android:angle="-90" /> 
</shape> 

tab_bg_unselected.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <gradient android:startColor="#5C5C5C" android:centerColor="#424242" 
    android:endColor="#222222" android:angle="-90" /> 
</shape> 

Và Cuối cùng trong lớp hoạt động chính của bạn

mTabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 

Và kết thúc :)

+0

Cảm ơn câu trả lời dài đó. Tôi sẽ lấy lại cho bạn sau khi tôi thực hiện nó. –

+0

Trợ giúp này có phù hợp với bạn không? :) –

+0

Vâng. Cảm ơn bạn –

Các vấn đề liên quan