簡體   English   中英

Android:無法在Tabhost上顯示指標文字和可繪制內容

[英]android: can't display indicator text and drawable on tabhost

我正在嘗試用四個選項卡選項卡在android中做一個簡單的選項卡應用程序。 我的問題是,當我想顯示圖標和指示器時,它僅顯示文本指示器,我想在tabhost上顯示可繪制和指示器文本,這是我的代碼:

@Override
    protected void onCreate(Bundle savedInstanceState) {
        //hide title bar
                BasicDisplaySettings.toggleTaskBar(SimasCardMainActivity.this, false);
                //show status bar
                BasicDisplaySettings.toggleStatusBar(SimasCardMainActivity.this, true);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.simascard);

        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

        // Create an Intent to launch an Activity for the tab (to be reused)
        intent = new Intent().setClass(this, TerbaruSimasCard.class);
        spec = tabHost.newTabSpec("Terbaru").setIndicator("Terbaru",
                  res.getDrawable(R.drawable.menu_terbaru))
                  .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, MerchantSimasCard.class);
        spec = tabHost.newTabSpec("Merchant").setIndicator("Merchant",
                  res.getDrawable(R.drawable.menu_merchant))
                  .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, TentangSimasCard.class);
        spec = tabHost.newTabSpec("Tentang").setIndicator("Tentang",
                  res.getDrawable(R.drawable.menu_tentang))
                  .setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, FaqSimasCard.class);
        spec = tabHost.newTabSpec("FAQ").setIndicator("FAQ",
                  res.getDrawable(R.drawable.menu_faq))
                  .setContent(intent);
        tabHost.addTab(spec);


        for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++){
            tabHost.getTabWidget().getChildAt(i).setPadding(0,0,0,0);
            tabHost.getTabWidget().getChildTabViewAt(i).setBackgroundDrawable(null);
        }
        tabHost.setCurrentTab(0);
    }

//  @Override
    public void onBackPressed() {
     finish();
    }

當我使用

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

它會顯示一個圖標,但是當我在setIndicatorsetIndicator諸如setIndicator("Tentang")之類的文本時,它僅在tabhost上顯示指示符文本,我不知道我的代碼在哪里出問題,我試圖增加標簽高度,但是不起作用,我希望有人可以幫助我解決問題。 謝謝

刪除此tabHost.getTabWidget().getChildTabViewAt(i).setBackgroundDrawable(null);

並替換為

tabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.menu_tentang);

我已經做到了,它工作正常

Resources ressources = getResources(); 
    TabHost tabHost = getTabHost();

    Intent addfriend = new Intent().setClass(this, yourclass1.class);
    Intent mailfriend = new Intent().setClass(this, yourclass2.class);
    tabHost.addTab(tabHost.newTabSpec("child1").setIndicator("your tag",getResources().getDrawable(R.drawable.youpng)).setContent(addfriend));
    tabHost.addTab(tabHost.newTabSpec("child1").setIndicator("your tag",getResources().getDrawable(R.drawable.yourpng)).setContent(mailfriend));



    tabHost.getTabWidget().getChildAt(0).setBackgroundColor(getResources().getColor(R.color.anycolor));
    tabHost.getTabWidget().getChildAt(0).setBackgroundResource(R.drawable.yourpng);

    tabHost.getTabWidget().getChildAt(1).setBackgroundColor(getResources().getColor(R.color.anycolor));
    tabHost.getTabWidget().getChildAt(1).setBackgroundResource(R.drawable.youpng);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM