标签主机中的问题

时间:2011-07-20 07:31:07

标签: android

我创建了一个标签主机..我想要做的是更改所选的每个标签主机的背景颜色。在我的情况下,使用三个标签主机,我的第一个标签的backgroundcolor是白色,其余两个是黑色...现在我想要的是,当我点击我的第二​​个标签时,它的背景颜色变为白色,其余两个变为黑色等等。我正在发送我的代码..请任何人检查我必须这样做的地方。

public void createTabHost()
        {
                    //create tabs
                    Resources res = getResources(); 
                    TabHost MainTabHost = getTabHost();  
                    TabHost.TabSpec spec; 
                    Intent intent; 

                    if(7 < Build.VERSION.SDK_INT)
                    {
                        MainTabHost.getTabWidget().setStripEnabled(false);
                    }

                    //call calendar Activity class
                    intent = new Intent().setClass(this, CalendarForm.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    spec = MainTabHost.newTabSpec("Calendar").setIndicator("Calendar",
                    res.getDrawable(R.drawable.calendar_ic)).setContent(intent);
                    MainTabHost.addTab(spec);

                    //call History Activity class
                    intent = new Intent().setClass(this, HistoryForm.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    spec = MainTabHost.newTabSpec("History").setIndicator("History",
                    res.getDrawable(R.drawable.calendar_ic)).setContent(intent);
                    MainTabHost.addTab(spec);

                    //call Statistic Activity class
                    intent = new Intent().setClass(this, StatisticForm.class);
                    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                    spec = MainTabHost.newTabSpec("Statistic").setIndicator("Statistic",
                    res.getDrawable(R.drawable.calendar_ic)).setContent(intent);
                    MainTabHost.addTab(spec);

                    //setbackground Style of tabHost
                    MainTabHost.setCurrentTab(0); 
                    MainTabHost.getTabWidget().setWeightSum(3);
                    TabWidget tabHost=getTabWidget();
                    MainTabHost.setBackgroundColor(Color.parseColor("#E0DCC9"));
                    //MainTabHost.setBackgroundResource(R.drawable.back_img);

                    for (int j = 0; j < MainTabHost.getTabWidget().getChildCount(); j++) 
                    {
                        ((TextView)tabHost.getChildAt(j).findViewById(android.R.id.title)).setTextColor(Color.parseColor("#FFFFFF"));
                         MainTabHost.getTabWidget().getChildAt(j).setBackgroundColor(Color.parseColor("#000000"));
                    }
                    MainTabHost.getTabWidget().getChildAt(0).setBackgroundColor(Color.parseColor("#E0DCC9"));
                    ((TextView)tabHost.getChildAt(0).findViewById(android.R.id.title)).setTextColor(Color.parseColor("#000000"));


        }

1 个答案:

答案 0 :(得分:2)

尝试在xml布局文件中执行此操作。

使用值android:background="@drawable/mytabhostbg,并在drawable文件夹中创建一个新的xml文件名mytabhostbg。

它应该是这样的:

< ?xml version="1.0" encoding="utf-8"?> < selector xmlns:android="http://schemas.android.com/apk/res/android"> < item android:state_window_focused="false" android:drawable="@drawable/buttonbackbleu" < item android:state_pressed="true" android:drawable="@drawable/buttonbackjaune" /> < item android:state_focused="true" android:drawable="@drawable/buttonbackbleu" /> < item android:state_enabled="true" android:drawable="@drawable/buttonbackbleu" /> < / selector>

enter image description here

<?xml version="1.0" encoding="UTF-8"?>

    

<item android:drawable="@drawable/back_image"
      android:state_selected="true" 
      android:state_pressed="false" />
<!-- When not selected, use white-->
<item android:drawable="@drawable/hq_ii" />

<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="#2C6B4C">
    <LinearLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="0dp">
    <TabWidget
    android:id="@android:id/tabs"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
    <FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="0dp"
    />
    </LinearLayout>
    </TabHost>