Vertical tabs in Android
Asked Answered
M

1

14

I want to make vertical tabs in Android like below image. enter image description here

I had see example for vertical tabs from below link.

Click here

In this link answer has some comments and in comments they had share code but the link of mega-upload is expired.

I had try many ways but not able to display tabs vertical. When I am trying according to link the tabs can not be display. Please help me

Mayers answered 1/9, 2011 at 8:43 Comment(0)
C
12

When I use tabs, I normally just hide the tabwidget tag by setting android visibility as gone.

And add buttons to act as the tab buttons like

THIS IS MODIFIED TO MAKE VERTICAL TAB BUTTONS

<?xml version="1.0" encoding="utf-8"?>
<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">
    <LinearLayout android:orientation="horizontal" 
        android:layout_width="fill_parent" android:layout_height="fill_parent">
        <FrameLayout android:layout_width="0dip" 
            android:layout_height="fill_parent" android:layout_weight="0.2">
        <TabWidget android:id="@android:id/tabs" 
                android:layout_width="fill_parent" 
                android:layout_height="wrap_content"
                android:visibility="gone"/>
            <LinearLayout android:layout_width="fill_parent"  
                android:layout_height="fill_parent"
                android:orientation="vertical">
                <Button android:layout_height="0dip" 
                    android:layout_width="fill_parent" 
                    android:layout_weight="1.0"
                android:background="@drawable/ic_tab_artists"               
                    android:id="@+id/artist_id" 
                    android:onClick="tabHandler"/>
                <Button android:layout_height="0dip" 
                    android:layout_width="fill_parent" 
                    android:layout_weight="1.0"
                android:background="@drawable/ic_tab_artists"  
                    android:id="@+id/album_id" 
                    android:onClick="tabHandler"/>
                <Button android:layout_height="0dip" 
                    android:layout_width="fill_parent" 
                    android:layout_weight="1.0"
                android:background="@drawable/ic_tab_artists"   
                    android:id="@+id/song_id" 
                    android:onClick="tabHandler"/>
        </LinearLayout> 
    </FrameLayout>       
    <FrameLayout android:id="@android:id/tabcontent" 
        android:layout_width="0dip" 
        android:layout_height="fill_parent" android:layout_weight="0.8"/>
</LinearLayout>

and I add a button click handler

public void tabHandler(View target){
    artistButton.setSelected(false);
    albumButton.setSelected(false);
    songButton.setSelected(false);
    if(target.getId() == R.id.artist_id){
        tabHost.setCurrentTab(0);
        artistButton.setSelected(true);
    } else if(target.getId() == R.id.album_id){
        tabHost.setCurrentTab(1);
        albumButton.setSelected(true);
    } else if(target.getId() == R.id.song_id){
        tabHost.setCurrentTab(2);
        songButton.setSelected(true);
    }
}

When I use this method, it gives me more freedom to style the tab buttons. The above xml is for horizontal tab buttons but you easily make it vertical but editing it a bit. Just make sure you need the Tahbost,Tabwidget and a framelayout with @android:id/tabcontent as the id.

Costplus answered 1/9, 2011 at 9:10 Comment(7)
Thanks for your reply.I can able to display tabs in horizontal but I am not able to display tab in vertical.If you have any idea about it please help meMayers
Yes this is the alternative option of vertical tab. thanks for your answer.I am looking for inbuilt functionality like the link in my question.Mayers
I keep getting errors on the button handler code. any ideas whyWizened
I keep getting forcecloses error on start up but no errors on compiling. The only issue I can think is that I have forced it into landscape. would that cause any issues.Wizened
Make it a separate question with the error logs. you will get more response.Costplus
How did you setup tabhost? I'm trying to use findView(android.R.id.tabhost) then tabhost.setup(), but tabhost currenttab is always -1.Schematism
TabHost is deprecated in API 30 developer.android.com/reference/android/widget/TabHostAgora

© 2022 - 2024 — McMap. All rights reserved.