2011-03-04 4 views
5

TabLayout을 사용하고 있고 사용하고있는 탭에 대한 사용자 지정 이미지가 있지만, 내 인생에서 탭과 이미지 사이의 구분선의 색이나 이미지를 변경하는 방법을 알 수 없습니다. 탭 콘텐츠. setDividerDrawable()을 사용하려고 시도했지만 탭 콘텐트를 설정하기 전에 호출 할 때 충돌이 발생하고 이후에 아무 작업도 수행하지 않습니다. 내가 흑인으로 충분하면 충분하지만, 지금까지 아무 것도 효과가 없다. 어떤 지침을 주셔서 감사합니다.Android에서 TabWidget 구분선의 색상 및/또는 드로어 블을 어떻게 변경합니까?

답변

9

다음을 수행해야합니다. tabHost.getTabWidget(). setDividerDrawable (R.drawable.tab_divider);

여기서 R.drawable.tab_divider는 resources 디렉토리의 이미지입니다.

하지만 핵심은 탭 호스트에 탭을 추가하기 전에해야한다는 것입니다.

private void initializeTabs(int curTab) { 
    this.tabHost = getTabHost(); 
    tabHost.clearAllTabs(); 

    TabSpec ts1, ts2, ts3, ts4, ts5; 
    // tab separator 
    tabHost.getTabWidget().setDividerDrawable(R.drawable.tab_divider); 

    ts1 = this.setupTab(new TextView(this), tabHost, R.drawable.browse_tab_normal, 
      mResources.getString(R.string.Browse)); 

    ts2 = this.setupTab(new TextView(this), tabHost, R.drawable.search_tab_normal, 
      mResources.getString(R.string.Search)); 

    ts3 = this.setupTab(new TextView(this), tabHost, R.drawable.postad_tab_normal, 
      mResources.getString(R.string.Post)); 

    ts4 = this.setupTab(new TextView(this), tabHost, R.drawable.watchlist_tab_normal, 
      mResources.getString(R.string.WatchList)); 

    ts5 = this.setupTab(new TextView(this), tabHost, R.drawable.managead_tab_normal, 
      mResources.getString(R.string.Login)); 

    // intents 
    ts1.setContent(new Intent().setClass(this, BrowseTabActivity.class)); 
    ts2.setContent(new Intent().setClass(this, SearchTabActivity.class)); 
    ts3.setContent(new Intent().setClass(this, PostAdTabActivity.class)); 
    ts4.setContent(new Intent().setClass(this, WatchlistTabActivity.class)); 
    ts5.setContent(new Intent().setClass(this, LoginTabActivity.class)); 

    tabHost.addTab(ts1); 
    tabHost.addTab(ts2); 
    tabHost.addTab(ts3); 
    tabHost.addTab(ts4); 
    tabHost.addTab(ts5); 

...

+0

답변은 정상이지만 이미지 대신 동일한 코드로 설정할 수 있습니다. 감사! – benoffi7

0

디바이더를 정의 할 수있는 더 좋은 방법이 당신의 XML 마크 업의 경우 확인하는 것입니다 : : 그래서

<TabWidget 
    android:layout_width="match_parent" 
    android:showDividers="middle" 
    android:divider="@drawable/design_tab_divider"> 
</TabWidget> 

,

내 탭 초기화 코드는 아래와 같다 마크 업에서 드로어 블을 정의 할 수 있습니다. android:divider과 함께 android:showDividers="middle"을 사용해야 탭 사이에 칸막이를 배치해야합니다. 사양을 자세히 읽고 LinearLayout에서 상속받은 속성에주의하십시오. - docs in google

관련 문제