2014-11-20 5 views

답변

2

SlidingTabLayout의 소스 코드를 수정하는 유일한 방법입니다.

mTabStrip.addView(tabView); 

방법에 레이아웃 PARAMS를 추가 populateTabStrip 방법에서보다

public static Point getWindowSize(Activity ac) { 
    Point size; 
    Display display = ac.getWindowManager().getDefaultDisplay(); 
    display.getSize(size); 
    return size; 
} 

:

은이 방법을 사용할 수 있습니다 현재 창 크기를 얻으려면.

매끄러운이

width = getWindowSize().x; 
mTabStrip.addView(tabView, 
    new LinearLayout.LayoutParams(width/2, ViewGroup.LayoutParams.WRAP_CONTENT)); 
+0

감사합니다. 그것은 완벽하게 작동합니다! – NaiveBz

+0

더 일반화하기 위해 필요한 탭 수를 보유하고있는 SlidingTabLayout에'numberOfTabs' 변수를 추가했습니다. 그리고 너비를 2로 나누는 대신 변수로 나눕니다. 분명히 클래스에서 set 메소드를 만들고이를 액티비티에서 설정하십시오. –

0

처럼이 나를 위해 완벽하게 작동합니다. SlidingTabLayout에서 populateTabStrip()에서

mTabStrip.addView(tabView); 

DisplayMetrics display = this.getResources().getDisplayMetrics(); 
int width = display.widthPixels; 
mTabStrip.addView(tabView, 
      new LinearLayout.LayoutParams(width/2, ViewGroup.LayoutParams.WRAP_CONTENT)); 

에 나는 이전의 대답에 제안 방법 getWindowSize (활동 교류를) 만들 필요가없는 것 같아요.

0

다른 사람이 필요로하는 경우를 대비하여 SlidingTab 클래스를 라이브러리로 게시했으며 setDistributeEvenly(true);을 호출하여이 문제를 해결하는 방법을 사용했습니다. 다음은 사용 방법의 예입니다.

SlidingTabLayout slidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs); 
slidingTabLayout.setDistributeEvenly(true); 
slidingTabLayout.setViewPager(viewPager); 

도서관은 https://github.com/nispok/slidingtabs입니다. Gradle을 통해 설치하려면 단지 다음과 같습니다

compile 'com.nispok:slidingtabs:1.0.0' 

는 희망이 도움이!