2010-07-17 4 views
4

탭 스타일을 밝은 테마로 설정하려고합니다. 나 한테 흰둥이를 주었어. 여러 가지 방법을 시도했지만 색을 바꿀 사람을 얻을 수 없습니다! Manifest, TabHost 또는 Tab Widget에서 테마를 할당 할 수 있습니까?탭 스타일을 밝은 테마로 설정하는 방법은 무엇입니까?

style.xml

<style name="SBstyle" parent="@android:style/Theme.Light"> 

    <item name="android:windowNoTitle">true</item> 
    <item name="android:tabWidgetStyle">@style/LightTabWidget</item> 
</style> 


<style name="LightTabWidget" parent="@android:style/Widget.TabWidget"> 

<item name="android:textColor">#de6001</item> 

그때 내가 가진 내 Manifest.xml

<application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/SBstyle"> 

그리고 마지막으로 내 tab.xml

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@android:id/tabhost" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="#ffffff" 
> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="0dp" 
    > 
    <include layout="@layout/nav_bar" android:layout_height="47dp" 
     android:layout_width="fill_parent" android:layout_alignParentTop="true" /> 
    <TabWidget 
     android:id="@android:id/tabs" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:background="#f8a96e" 
     android:tabStripEnabled="false" 

     /> 
    <FrameLayout 
     android:id="@android:id/tabcontent" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="5dp" /> 
</LinearLayout> 
</TabHost> 

나는 어떤 HEL을 주셔서 감사합니다 이것에 p 고마워!

+0

난 그냥 2.0 이후 흰색 테마를 가지고 있지 않습니다 tabwidget를 참조하십시오. 이것이 이유일까요? 그렇다면 다른 방법으로 변경할 수 있습니까? – bdudaday

+0

나는이 질문에 대한 해답을 오랫동안 찾고 있었다. 적 대답을 찾았습니까 ?? –

답변

1

사용자 정의 탭을 완전히 사용하는 경우 탭에서 원하는 모든 작업을 수행 할 수 있습니다. 다음은 코드입니다. 도움이 되길 바랍니다.

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); 


    /** 
    * Reset the tabs by showing the tab home screen everytime the tab 
    * is clicked in any screen other than home screen. 
    */ 
    getTabWidget().getChildAt(0).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (getTabHost().getCurrentTabTag().equals(mTag1) == false) { 
       getTabHost().setCurrentTab(0); 
      } 
      handleTabClicks(); 
     } 
    }); 
    getTabWidget().getChildAt(2).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (getTabHost().getCurrentTabTag().equals(mTag2) == false) { 
       getTabHost().setCurrentTab(1); 
      } 
      handleTabClicks(); 
     } 
    }); 
    getTabWidget().getChildAt(4).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (getTabHost().getCurrentTabTag().equals(mTag3) == false) { 
       getTabHost().setCurrentTab(2); 
      } 
      handleTabClicks(); 
     } 
    }); 
    getTabWidget().getChildAt(6).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (getTabHost().getCurrentTabTag().equals(mTag4) == false) { 
       getTabHost().setCurrentTab(3); 
      } 
      handleTabClicks(); 
     } 
    }); 

    // Login 
    getTabWidget().getChildAt(8).setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (getTabHost().getCurrentTabTag().equals(mTag5) == false) { 
       getTabHost().setCurrentTab(4); 
      } 
      handleTabClicks(); 
     } 
    }); 

    // so that we can programatically switch tabs 
    ((ApplicationHelper) getApplication()).setTabHost(tabHost); 

    fl = (FrameLayout) findViewById(android.R.id.tabcontent); 

    tabHost.setCurrentTab(curTab); 

} 

나는 onCreate()에서 initializeTabs()를 호출합니다.

private TabSpec setupTab(final View view, final TabHost mTabHost, final int imageId, final String tag) { 
    final View tabview = createTabView(mTabHost.getContext(), imageId, tag); 
    TabSpec setContent = mTabHost.newTabSpec(tag).setIndicator(tabview).setContent(new TabContentFactory() { 
     public View createTabContent(String tag) {return view;} 
    }); 
    return setContent; 
} 

private static View createTabView(final Context context, final int imageId, final String text) { 
    View view = LayoutInflater.from(context).inflate(R.layout.tab_with_icon, null); 
    TextView tv = (TextView) view.findViewById(R.id.tabTitle); 
    tv.setText(text); 

    ImageView iv = (ImageView) view.findViewById(R.id.iconImage); 
    if (iv != null) 
     iv.setImageResource(imageId); 
    view.setTag(text); 
    view.setBackgroundResource(R.drawable.tab_bg_selector); 

    // only refresh on watchlist 
    if (text.equals(context.getString(R.string.WatchList))) 
     refreshTab(context, view); 
    else { 
     RelativeLayout countLayout = (RelativeLayout) view.findViewById(R.id.countLayout); 
     if (countLayout != null) 
      countLayout.setVisibility(View.GONE); 
    } 
    return view; 
} 

을 그리고 마지막으로, R.layout.tab_with_icon에 대한 XML :

setupTab은 다음과 같습니다

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/tabsLayout" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="@drawable/tab_bg_selector" 
    android:orientation="vertical"> 
    <RelativeLayout android:layout_width="wrap_content" android:id="@+id/relativeLayout1" android:layout_height="wrap_content" android:gravity="center" android:layout_centerInParent="true" android:background="@drawable/tab_bg_selector"> 
     <ImageView android:layout_width="wrap_content" android:id="@+id/iconImage" android:src="@drawable/watchlist_tab_normal" android:layout_height="wrap_content" android:layout_centerHorizontal="true"></ImageView> 
     <TextView android:text="Title" android:layout_width="wrap_content" android:id="@+id/tabTitle" android:layout_height="wrap_content" android:layout_below="@+id/iconImage" android:layout_centerHorizontal="true" android:ellipsize="marquee" android:lines="1" android:maxLines="1" android:scrollHorizontally="true" android:textSize="@dimen/tabTextSize"></TextView> 
     <RelativeLayout android:layout_width="wrap_content" android:id="@+id/countLayout" android:layout_height="wrap_content" android:layout_alignRight="@+id/iconImage"> 
      <ImageView android:layout_width="wrap_content" android:id="@+id/redImage" android:src="@drawable/watchlist_count" android:layout_height="wrap_content"></ImageView> 
      <TextView android:text="1" android:textColor="@color/white" android:layout_width="wrap_content" android:id="@+id/countText" android:layout_height="wrap_content" android:layout_centerInParent="true" android:textStyle="bold"></TextView> 
     </RelativeLayout> 
    </RelativeLayout> 
</RelativeLayout> 
관련 문제