Отменить выбор вкладки в TabHost - PullRequest
1 голос
/ 03 ноября 2011

У меня есть TabHost с 5 вкладками.Насколько я вижу, всегда должна быть выбрана одна вкладка.

Мне нужен способ отменить выбор всех моих вкладок, чтобы ни одна из них не была выбрана.

Если подразумевается вкладкаВ общем, чтобы одна вкладка была выбрана постоянно, как я могу сделать так, чтобы она отображалась (говоря на пользовательском интерфейсе), как будто эта вкладка не выбрана?

Ответы [ 3 ]

4 голосов
/ 15 мая 2013

попробуйте это:

final TabWidget tabWidget = tabHost.getTabWidget();
final int n = tabWidget.getChildCount();
for (int i = 0; i < n; ++i) {
    tabWidget.getChildAt(i).setSelected(false);
}

или вы можете добавить скрытую вкладку и выбрать ее, если хотите отменить выбор вкладки

tabHost.addTab(
            tabHost.newTabSpec("hiddenTab").setIndicator(""),
            MyFragment.class,
            null
    );

tabHost.getTabWidget().getChildTabViewAt(hiddenTabIndex).setVisibility(View.GONE);

и выберите эту вкладку, когда хотите

tabHost.setCurrentTab(hiddenTabIndex);
1 голос
/ 03 ноября 2011

Это не возможно AFAIK.но да, вы можете установить цвет выбранной вкладки так, чтобы она была невыбранной, и установить пустой макет поверх нее, управляя глобальной переменной, когда вы делаете ее «невыбранной», и устанавливая нормальный макет, когда вы хотите, чтобы он нормально отображался пользователю,Но это своего рода хитрость.

Надеюсь, вы поняли мою точку зрения!

РЕДАКТИРОВАТЬ:

Предположим, вы установили String what="disappear" где-то в своем коде, чтобы показать, что он не выбран., затем вы можете использовать эту функцию, чтобы изменить цвет вкладки:

Main.class:

//Change The Backgournd Color of Tabs
    public void setTabColor(TabHost tabhost) {


        for(int i=0;i<tabhost.getTabWidget().getChildCount();i++)
        {
                tabhost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#FFFFFF"))); //unselected white colored                   
        }

            if(!what.equals("disappear"))
                 tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(Color.parseColor("FF0000"))); // selected red colored

            else
                 tabhost.getTabWidget().getChildAt(tabhost.getCurrentTab()).setBackgroundColor(Color.parseColor("FFFFFF"))); // selected but show as unselected with white color


    }

И в вашем классе активности (который открывается выбраннымвкладка):

FirstActivity.class:

if(what.equals("disappear"))
      setContentView(R.layout.blank);
else
      setContentView(R.layout.first_layout);

blank.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:orientation="vertical"
  android:id="@+id/layout"
  android:background="#ffffff"  
  android:gravity="center">
  <!-- You can make background transperent by setting it to "00ffffff" -->
  <!-- You can also add this textview to guide user -->
  <!--
      <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Click Any Tab To Start
         />
  -->
</LinearLayout>
0 голосов
/ 03 ноября 2011

Для этой цели, может быть, использование tabHost не является правильным способом?

...