2013-08-30 29 views
6

hiện tại tôi đang cố triển khai FragmentTabHost cho dự án của mình. Tôi vẫn còn mới trên mảnh vỡ này nhưng tôi thấy nó rất tuyệt vời về việc tái sử dụng các bố trí, vv đó là lý do tại sao tôi muốn đẩy bản thân mình hơn nữa vào nó. Bây giờ tôi đọc các hướng dẫn về cách tạo một Tabs với mảnh và tôi đi vào hướng dẫn này:Tùy chỉnh FragmentTabHost đặt TabWidget ở dưới cùng

http://maxalley.wordpress.com/2013/05/18/android-creating-a-tab-layout-with-fragmenttabhost-and-fragments/

Bây giờ này chỉ hoạt động tốt, ngoại trừ việc tabWidget nằm trên bố trí của tôi, nơi tôi muốn nó ở dưới đáy. Tôi thấy rằng tôi cần phải thiết lập tabWidget sau khi tất cả các tab đã được khởi tạo vì vậy tôi cố gắng thêm các mã:

mTabWidget = (TabWidget) findViewById(android.R.id.tabs); 

    mTabWidget.setBackgroundColor(Color.WHITE); 
    mTabWidget.setShowDividers(LinearLayout.SHOW_DIVIDER_NONE); 
    mTabWidget.setGravity(Gravity.BOTTOM); 

Bây giờ này đã loại bỏ được chia và thay đổi màu sắc nhưng rõ ràng sẽ không đặt Widget của tôi ở phần dưới cùng của bố cục của tôi. Bây giờ tôi sẽ làm như thế nào?

Tôi cũng đã cố gắng chỉnh sửa tabhost xml và chỉ cần đặt TabWidget sau FrameLayout nhưng không có gì xảy ra. đây là xml:

<android.support.v4.app.FragmentTabHost 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       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" > 

       <FrameLayout 
         android:id="@+id/tabFrameLayout" 
         android:layout_width="match_parent" 
         android:layout_height="0dp" 
         android:layout_weight="1" /> 

       <TabWidget 
         android:id="@android:id/tabs" 
         android:layout_width="match_parent" 
         android:layout_height="wrap_content" 
         android:layout_weight="0" 
         android:orientation="horizontal" 
         /> 

      </LinearLayout> 

     </android.support.v4.app.FragmentTabHost> 

Trả lời

13

Tôi có tham khảo liên kết này github example

Đây sẽ là cách bố trí của bạn:

<?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" > 

    <FrameLayout 
     android:id="@+id/realtabcontent" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" /> 

    <android.support.v4.app.FragmentTabHost 
     android:id="@android:id/tabhost" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_weight="0" /> 
    </android.support.v4.app.FragmentTabHost> 

</LinearLayout> 

Đối Tabs tùy chỉnh của bạn:

mTabHost.addTab(setIndicator(mTabHost.newTabSpec("Tab1"), 
         R.drawable.image1), 

    public TabSpec setIndicator(Context ctx,TabSpec spec, int resid) { 
     // TODO Auto-generated method stub 
     View v = LayoutInflater.from(ctx).inflate(R.layout.tabs_text, null); 
     v.setBackgroundResource(resid); 
     TextView text = (TextView) v.findViewById(R.id.tab_title); 
     text.setText(spec.getTag()); 
     return spec.setIndicator(v); 
    } 

Sửa

//To set drawable to your perticular TAB 
mTabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.tab_login); 

cuối Sửa

Nếu bạn muốn thêm drawable (selector):

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:drawable="@drawable/tab_compose_h" android:state_selected="true"/> 
    <item android:drawable="@drawable/tab_compose_h" android:state_pressed="true"/> 
    <item android:drawable="@drawable/tab_compose"/> 

</selector> 
+0

Hiện nay kiểm tra nó ra. :) – KaHeL

+0

Hi Gru, thử nghiệm nó và nó hoạt động! Nhưng tôi có một vấn đề. TabDividers hiển thị và tôi không biết đặt nó. cũng như tôi không thể thay đổi màu sắc của các tab. Tôi nên làm như thế nào? – KaHeL

+0

Và tôi đã có nó! :)) Cảm ơn bạn rất nhiều! – KaHeL

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