Хотите сделать так, чтобы весь Tabhost исчезал или становился невидимым при нажатии на конкретную вкладку - PullRequest
3 голосов
/ 09 декабря 2011

Скажем, у меня 2 tabs в моем TabActivity и при нажатии на один из tabs я попадаю в мой Activity с именем FirstTab. не хочу, чтобы мои TabHost были видны.

То есть каждый раз, когда я нажимаю на вкладку, я хочу, чтобы мои TabHost исчезли.

Как я могу это сделать?

Фрагмент кода:

TabSpec firstTabSpec = tabHost.newTabSpec("tid1");  
firstTabSpec.setIndicator("", getResources().getDrawable(R.drawable.icon));
firstTabSpec.setContent(new Intent(this,FirstTab.class)); 
tabHost.addTab(firstTabSpec);

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

<TabHost android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:id="@android:id/tabhost">
<LinearLayout android:id="@+id/LinearLayout01"
 android:orientation="vertical" 
 android:layout_height="fill_parent"
 android:layout_width="fill_parent">
<TabWidget android:id="@android:id/tabs"
 android:background="@drawable/bar_green"
 android:layout_height="wrap_content" 
 android:layout_width="fill_parent"></TabWidget>
<FrameLayout android:id="@android:id/tabcontent"
 android:layout_height="fill_parent" 
 android:layout_width="fill_parent"></FrameLayout>
</LinearLayout>
</TabHost>

У меня есть простой FirstTab Activity, который отображается под TabHost при нажатии на мой tab, который я хочу преобразовать в класс без содержания TabHost.

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Если вы не хотите использовать TabHost, то вот другой способ, которым вы можете достичь этого. Я не знаю, полезно ли вам это или нет.

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button button=(Button)findViewById(R.id.tab1);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            startActivity(new Intent(MainActivity.this,SubActivity.class));

        }
    });
}

}

SubActivity.java

public class SubActivity extends Activity 
{
    public void onCreate(Bundle instance)
    {
        super.onCreate(instance);
        setContentView(R.layout.sub);
    }

}

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <include layout="@layout/buttonpanel" />
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="Your stuff goes here" />
</LinearLayout>

sub.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:text="Subactivity" />

</LinearLayout>

buttonpanel.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:weightSum="2">
    <Button android:layout_height="wrap_content"
        android:layout_width="fill_parent" android:text="Tab1" android:id="@+id/tab1"
        android:layout_weight="1" />
    <Button android:layout_height="wrap_content"
        android:layout_width="fill_parent" android:text="Tab2" android:id="@+id/tab2"
        android:layout_weight="1" />

</LinearLayout>

Вы можете изменить макеты и активность в соответствии с вашими потребностями.

1 голос
/ 09 декабря 2011

Вы можете попробовать установить видимость TabHost на "View.GONE"

getTabHost().setOnTabChangedListener(new OnTabChangeListener() {
                public void onTabChanged(String tabId) {
                    if (tabId=="firstTabId")
                        getTabHost().setVisibility(View.GONE);
                }
            });

Но вы уверены, что хотите сделать именно это? Как пользователь может вернуться ко второй вкладке?

...