android изменить фон FragmentTabHost и цвет текста

я работаю FragmentTabHost. я создал FragmentTabHost и могу заменить некоторые фрагменты. теперь я хочу изменить цвет фона в FragmentTabHost, а также цвет текста. например, я хочу, чтобы цвет фона был черным, а цвет текста белым. это мой код xml

<android.support.v4.app.FragmentTabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#ff0000"/>

    <FrameLayout
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>

and this is a my java code

 public class CustomTabActivity extends FragmentActivity {
    private FragmentTabHost mTabHost;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);
        mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);

        mTabHost.addTab(
                mTabHost.newTabSpec("tab1").setIndicator("Tab 1", null),
                StradaMenu.class, null);
        mTabHost.addTab(
                mTabHost.newTabSpec("tab2").setIndicator("Tab 2", null),
                StradaMenu.class, null);
        mTabHost.addTab(
                mTabHost.newTabSpec("tab3").setIndicator("Tab 3", null),
                StradaMenu.class, null);
    }

}

Как я могу решить мою проблему? если кто знает решение помогите пожалуйста спасибо


person baggio    schedule 22.12.2014    source источник
comment
Вам нужно изменить один цвет для каждой вкладки? или разные цвета для каждой вкладки?   -  person Steve    schedule 22.12.2014
comment
я хочу изменить цвет для каждой вкладки   -  person baggio    schedule 22.12.2014


Ответы (1)


Вы должны использовать вкладки панели действий, чтобы получить разные цвета для каждой вкладки.

Ознакомьтесь с этим.

MainActivity.java:

public class MainActivity extends FragmentActivity {
 static ViewPager Tab;
 TabsPagerAdapter TabAdapter;
 ActionBar actionBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TabAdapter = new TabsPagerAdapter(getSupportFragmentManager());

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

    Tab.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
        @Override
        public void onPageSelected(int position) {
            actionBar = getActionBar();
            actionBar.setSelectedNavigationItem(position);
        }
    });

    Tab.setAdapter(TabAdapter);
    actionBar = getActionBar();
    // Enable Tabs on Action Bar
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
        @Override
        public void onTabReselected(android.app.ActionBar.Tab tab,
                FragmentTransaction ft) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            Tab.setCurrentItem(tab.getPosition());
        }

        @Override
        public void onTabUnselected(android.app.ActionBar.Tab tab,
                FragmentTransaction ft) {
            // TODO Auto-generated method stub
        }
    };

    LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);

    ActionBar.Tab tab = actionBar.newTab().setText("Home")
            .setTabListener(new TabListener(this, Home.class.getName()));
    View tabView = inflater.inflate(R.layout.fragment_home, null);
    tabView.setBackgroundResource(R.drawable.gradient_shape); // set custom
                                                                // color

    tab.setCustomView(tabView);
    actionBar.addTab(tab);

    tab = actionBar.newTab().setText("News")
            .setTabListener(new TabListener(this, News.class.getName()));
    View tabView2 = inflater.inflate(R.layout.fragment_news, null);
    tabView2.setBackgroundResource(R.drawable.gradient_shape2); // set
                                                                // custom
                                                                // color
    tab.setCustomView(tabView2);
    actionBar.addTab(tab);

    tab = actionBar.newTab().setText("Latest")
            .setTabListener(new TabListener(this, Latest.class.getName()));
    View tabView3 = inflater.inflate(R.layout.fragment_latest, null);
    tabView3.setBackgroundResource(R.drawable.gradient_shape3); // set
                                                                // custom
                                                                // color
    tab.setCustomView(tabView3);
    actionBar.addTab(tab);

  }

public static class TabListener extends Fragment implements
        ActionBar.TabListener {

    public TabListener(MainActivity mainActivity, String name) {
        // this(mainActivity,name);
    }

    @Override
    public void onTabSelected(android.app.ActionBar.Tab tab,
            FragmentTransaction ft) {
        Tab.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabUnselected(android.app.ActionBar.Tab tab,
            FragmentTransaction ft) {

    }

    @Override
    public void onTabReselected(android.app.ActionBar.Tab tab,
            FragmentTransaction ft) {

    }

}

}
person Steve    schedule 22.12.2014