2

я пытаюсь создать пользовательские вкладки в андроид, у меня есть создать вкладки в FragmentActivity и FragmentPagerAdapterсоздавать собственные вкладки в FragmentActivity

Вот код, но я действительно не знаю, где я могу надуть пользовательские вкладки используя

View tabIndicator = LayoutInflater.from(mContext). 
        inflate(R.layout.tab_item, mTabHost.getTabWidget(), false); 

код в методе OnCreate из FragmentActivity

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

     if(mTabHost!=null) System.out.println("***ITS NOT NULL****"); 

     mViewPager = (ViewPager)findViewById(R.id.pager); 

     mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager); 

     mTabsAdapter.addTab(mTabHost.newTabSpec("simple").setIndicator("Contacts"), 
       ContactSummaryFragment.class, null); 

     mTabsAdapter.addTab(mTabHost.newTabSpec("custom").setIndicator("Template"), 
       TextVoiceTemplate.class, null); 

метод addTab

public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) { 
       tabSpec.setContent(new DummyTabFactory(mContext)); 

     // I got to place this line somewhere here i guess 
       //View tabIndicator = LayoutInflater.from(mContext).inflate(R.layout.tab_item, mTabHost.getTabWidget(), false); 
       String tag = tabSpec.getTag(); 

       TabInfo info = new TabInfo(tag, clss, args); 
       mTabs.add(info); 
       mTabHost.addTab(tabSpec); 
       notifyDataSetChanged(); 
      } 

ответ

3

Вы можете указать расположение с TabSpec:

Здесь у вас есть addTab в адаптере

public void addTab(TabHost.TabSpec tabSpec, Class<?> clss, Bundle args) 
      { 
       tabSpec.setContent(new DummyTabFactory(mContext)); 
       String tag = tabSpec.getTag(); 

       TabInfo info = new TabInfo(tag, clss, args); 
       mTabs.add(info); 
       mTabHost.addTab(tabSpec); 
       notifyDataSetChanged(); 
      } 

и, прежде чем заполнить вас вкладку с содержанием (Ususally в OnCreate), вы можете написать свой собственный функция

private static View prepareTabView(Context context, String text, int drawable) 
    { 
     View view = LayoutInflater.from(context).inflate(R.layout.tab_layout, null); 
     ((TextView) view.findViewById(R.id.tabTitle)).setText(text); 
     ((ImageView) view.findViewById(R.id.tabImage)).setImageResource(drawable); 
     return view; 

    } 

    public static void addTab(TabsAdapter adapter, TabHost host, String title, String tag, int drawable, Class cl) 
    { 
     TabHost.TabSpec spec = host.newTabSpec(tag); 
     View view = prepareTabView(host.getContext(), title, drawable); 
     spec.setIndicator(view); 

     adapter.addTab(spec, cl,null); 

    } 

и теперь вы можете заполнить ваш tabHost с собственным addTab, который использует addTab адаптер:

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

     mViewPager = (ViewPager) findViewById(R.id.pager); 

     mTabsAdapter = new TabsAdapter(this, mTabHost, mViewPager, getSupportFragmentManager()); 

     addTab(mTabsAdapter, mTabHost, getString(R.string.title1), CONST, R.drawable.tab_drawable1, Fragment1.class); 
     addTab(mTabsAdapter, mTabHost, getString(R.string.title1), CONST2, R.drawable.tab_formula_image_selector, Fragment2.class); 

в этом примере вы имеете R.layout.tab_layout с растяжимой, фон, текст и т.д. ...:

R.layout.tab_layout:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="top" android:background="@drawable/tabbg"> 

    <TextView 
     android:id="@+id/tabTitle" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="30dp" 
     android:text="TextView" 
     android:textColor="@color/tabtextcolor" 
     android:textSize="12sp" android:layout_alignParentBottom="true"/> 

    <ImageView 
     android:id="@+id/tabImage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="5dp" android:layout_above="@id/tabTitle" android:layout_centerHorizontal="true"/> 

</RelativeLayout> 

с этим примером вы будет иметь л так:

Sample result

+2

что DummyTabFactory? – Hades

+0

это фабрика от android-sdks \ extras \ android \ support \ samples \ Support4Demos \ src \ com \ example \ android \ supportv4 \ app \ FragmentTabsPager.java – dilix

Смежные вопросы