简体   繁体   English

Android如何更改选项卡上的选项卡图标

[英]Android How To change Tab Icons on tab click

Android: Android:

I am new to android I want to change tab icons on tab click. 我是Android新手,我想在标签点击时更改标签图标。 i have followed may tutorials that guide how to change tab icons via selecter xml file like 我遵循了可能指导如何通过选择器xml文件更改标签图标的教程,例如

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html http://www.androidhive.info/2011/08/android-tab-layout-tutorial/ http://developer.android.com/resources/tutorials/views/hello-tabwidget.html http://www.androidhive.info/2011/08/android-tab-layout-tutorial/

but in my cause why all these not work it change only first tab icons selected to unselected and unselected to selected but not work for all others where is the problem in my code please help me plz plz plz 但是,由于我的原因,所有这些都不起作用,因此它仅将第一个选项卡图标更改为未选择,未更改为已选择,但不适用于所有其他选项卡,这是我的代码中的问题,请帮助我。

my code is as follow 我的代码如下

my drawable icons setting file is as follow with names as 我的可绘制图标设置文件如下,名称为

becel_setting.xml under drawable folder 可绘制文件夹下的becel_setting.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- When selected, -->
    <item android:drawable="@drawable/menu_promenera_selected"
          android:state_selected="true"
          android:state_pressed="false" />

    <!-- When not selected, -->
    <item android:drawable="@drawable/menu_promenera"
         />

    <!-- When selected, -->
    <item android:drawable="@drawable/menu_varaframsteg_selected"
          android:state_selected="true"
          android:state_pressed="false" />
    <!-- When not selected, -->
    <item android:drawable="@drawable/menu_varaframsteg"
         />

    <!-- When selected,  -->
    <item android:drawable="@drawable/menu_minapromenader_selected"
          android:state_selected="true"
          android:state_pressed="false" />
    <!-- When not selected,-->
    <item android:drawable="@drawable/menu_minapromenader"
         />

    <!-- When selected,  -->
    <item android:drawable="@drawable/menu_information_selected"
          android:state_selected="true"
          android:state_pressed="false" />
    <!-- When not selected, -->
    <item android:drawable="@drawable/menu_information"
         />

</selector>

and my tab host host class is as follow 和我的选项卡主机主机类如下

public class BECEL extends TabActivity{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try{
            setMenuTabs();
        }catch(Exception ex){
            String message = ex.getMessage();
        }
    }

    private void setMenuTabs() {
        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost

        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        /*******************************************/

        intent = new Intent(this, BecelFacebookConnection.class);

        spec = tabHost.newTabSpec("").setIndicator("",
        res.getDrawable(R.drawable.becel_setting)).setContent(intent);  /**** xml file name becel_setting ******/
        tabHost.addTab(spec);        



        intent = new Intent(this, OurProgress.class);
        Drawable mySelector = getResources().getDrawable(R.drawable.menu_varaframsteg);
        spec = tabHost.newTabSpec("").setIndicator("",mySelector).setContent(intent);
        tabHost.addTab(spec);



        intent = new Intent(this, MyWalks.class);

        spec = tabHost.newTabSpec("").setIndicator("",
        res.getDrawable(R.drawable.menu_minapromenader)).setContent(intent);
        tabHost.addTab(spec);



        intent = new Intent(this, WalkInformations.class);

        spec = tabHost.newTabSpec("").setIndicator("",
        res.getDrawable(R.drawable.menu_information)).setContent(intent);
        tabHost.addTab(spec);

        tabHost.setCurrentTab(0);

    }
}

Please help me where is problem in my code 请帮助我代码中的问题

you need to provide a unique string value for your each newTabSpec("") . 您需要为每个newTabSpec(“”)提供唯一的字符串值。 for example tab1 , tab2 , tab3 and tab4 in the following example: 在以下示例中,例如tab1tab2tab3tab4

public class BECEL extends TabActivity{
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try{
            setMenuTabs();
        }catch(Exception ex){
            String message = ex.getMessage();
        }
    }

    private void setMenuTabs() {
        Resources res = getResources(); // Resource object to get Drawables
        TabHost tabHost = getTabHost();  // The activity TabHost

        TabHost.TabSpec spec;  // Resusable TabSpec for each tab
        Intent intent;  // Reusable Intent for each tab

        /*******************************************/

        intent = new Intent(this, BecelFacebookConnection.class);

        spec = tabHost.newTabSpec("tab1").setIndicator("tab1",
        res.getDrawable(R.drawable.becel_setting)).setContent(intent);  /**** xml file name becel_setting ******/
        tabHost.addTab(spec);        



        intent = new Intent(this, OurProgress.class);
        Drawable mySelector = getResources().getDrawable(R.drawable.menu_varaframsteg);
        spec = tabHost.newTabSpec("tab2").setIndicator("tab2",mySelector).setContent(intent);
        tabHost.addTab(spec);



        intent = new Intent(this, MyWalks.class);

        spec = tabHost.newTabSpec("tab3").setIndicator("tab3",
        res.getDrawable(R.drawable.menu_minapromenader)).setContent(intent);
        tabHost.addTab(spec);



        intent = new Intent(this, WalkInformations.class);

        spec = tabHost.newTabSpec("tab4").setIndicator("tab4",
        res.getDrawable(R.drawable.menu_information)).setContent(intent);
        tabHost.addTab(spec);

        tabHost.setCurrentTab(0);

    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM