2016-12-26 3 views
0

TabLayout에 탭을 동적으로 추가하려고합니다. 다른 사용자 지정보기로 다른 개체를 추가 할 수 있습니다.수정 된 사용자 지정보기를 다른 탭보기 사용자 지정보기로 추가 할 수 없음 탭 레이아웃 사용자 지정보기

문제는 동적으로 여러 가지 사용자 지정보기를 추가해야하며 가능한 경우 각 탭마다 view의 다른 인스턴스를 만들고 싶지 않다는 것입니다.

TabLayout mTabLayout = (TabLayout) findViewById(R.id.tabs); 
    TextView textView = (TextView)getLayoutInflater().inflate (R.layout.simple_text_layout,null,false); 
    textView.setText ("HIM"); 
    mTabLayout.addTab(mTabLayout.newTab().setCustomView (textView).setTag ("0")); 
    TextView textView1 = (TextView)getLayoutInflater().inflate (R.layout.simple_text_layout,null,false); 
    textView1.setText ("HER"); 
    mTabLayout.addTab(mTabLayout.newTab().setCustomView (textView1).setTag ("1")); 
    textView1 = (TextView)getLayoutInflater().inflate (R.layout.simple_text_layout,null,false); 
    textView1.setText ("OTHERS"); 
    mTabLayout.addTab(mTabLayout.newTab().setCustomView (textView1).setTag ("2")); 

위와 같은 사용자 지정보기를 첨부하면이 결과가 나타납니다. enter image description here

 TabLayout mTabLayout = (TabLayout) findViewById(R.id.tabs); 
     TextView textView = (TextView)getLayoutInflater().inflate (R.layout.simple_text_layout,null,false); 
     textView.setText ("HIM"); 
     mTabLayout.addTab(mTabLayout.newTab().setCustomView (textView).setTag ("0")); 
     TextView textView1 = (TextView)getLayoutInflater().inflate (R.layout.simple_text_layout,null,false); 
     textView1.setText ("HER"); 
     mTabLayout.addTab(mTabLayout.newTab().setCustomView (textView1).setTag ("1")); 
     textView1 = (TextView)getLayoutInflater().inflate (R.layout.simple_text_layout,null,false); 
     textView1.setText ("OTHERS"); 
     mTabLayout.addTab(mTabLayout.newTab().setCustomView (textView1).setTag ("2")); 
     textView1.setText ("ACCESS.."); 

     mTabLayout.addTab(mTabLayout.newTab().setCustomView ( textView1).setTag ("3")); 

는 나는이 결과를 얻을 내 tabLayout에 위와 같이 항목을 첨부합니다.

enter image description here

사람은 지적 할 수 내가 변경된 값 tabLayout에 대해 여러 개의 사용자 정의보기를보기 같은 개체를 사용하는 것을 시도로하고있는 중이 야 무슨 일?

+0

? viewpager로 여러 개의 사용자 정의 탭 만들기? – Noorul

+0

탭을 사용자 정의하기 때문에 간단합니다. – erluxman

+0

기다려주십시오. 나는 대답을 업데이트 할 것이다. – Noorul

답변

0

나는 SmartTabLayout을 사용했다. 필요에 맞게 사용자 정의 할 수 있습니다.

는 레이아웃을 초기화 : 다음

viewPager.setOffscreenPageLimit(tabContent.size()); 
    final SmartTabLayout viewPagerTab = (SmartTabLayout) view.findViewById(R.id.viewpagertab); 
    setUpTab(viewPagerTab, viewPager.getContext()); 
    viewPagerTab.setViewPager(viewPager); 

,

이 탭의 목록을 만들 수 있습니다. 다음은

List<String> tabContent= new ArrayList<>(); 

SetupTab 기능 :

 private void setUpTab(final SmartTabLayout layout, Context context) { 
    final LayoutInflater inflater = LayoutInflater.from(context); 
    layout.setCustomTabView(new SmartTabLayout.TabProvider() { 
     @Override 
     public View createTabView(ViewGroup container, int position, PagerAdapter adapter) { 
      @SuppressLint("InflateParams") View view = inflater.inflate(R.layout.custom_tab, null); 
      TextView customtextView = (TextView) view.findViewById(R.id.txtCustomTab); 
      String tab= tabContent.get(position); 
      customtextView.setText(tab);     
      return customtextView; 
     } 

    }); 
} 

설정 호출기 어댑터 :

pagerAdapter = new TabPagerAdapter(getChildFragmentManager(), tabContent); 
    viewPager.setAdapter(pagerAdapter); 

TabPagerAdapter 클래스 당신이 원하는 무엇을

public class TabPagerAdapter extends FragmentStatePagerAdapter { 


List<String> list; 
private Context context; 

public TabPagerAdapter(FragmentManager fm, List<String> list) { 
    super(fm); 
    this.list = list; 
} 


public void setContext(Context context) { 
    this.context = context; 
} 


@Override 
public Fragment getItem(int position) { 
    return setListItems(position); 
} 

private Fragment setListItems(int pos) { 
    YourCustomFragment fragment = new YourCustomFragment(); 
    fragment.setData(list.get(pos)); 
    return fragment; 
} 

@Override 
public int getCount() { 
    return list.size(); 
} 

public TabPagerAdapter setTitle(boolean hasTitle) { 
    return this; 
} 
    }