Как создать пользовательский API для tabhost и tabwidget? - PullRequest
5 голосов
/ 12 октября 2011

Я создал прокручиваемую панель вкладок, используя tabhost, tabwidget и horizontalscrollbar, который имеет layout_gravity внизу. Теперь я хочу создать пользовательский API , чтобы любой мог использовать API, изменить размер текста, высоту, ширину и т. Д., В соответствии с их требованиями.

Tabbar.java

package com.tabbar.project;

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TabHost;

public class Tabbar extends TabActivity {  
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);   
        Resources res = getResources();

        // TabHost will have Tabs
        TabHost tabHost = getTabHost();


        /* TabSpec used to create a new tab. 
         * By using TabSpec only we can able to setContent to the tab.
         * By using TabSpec setIndicator() we can set name to tab. 
         * TabSpec setContent() is used to set content for a particular tab.*/

        //adding tabbar items
        TabHost.TabSpec spec;   
        Intent intent;
        intent = new Intent().setClass(this, FirstActivity.class);
        spec = tabHost.newTabSpec("first").setIndicator("Contact", res.getDrawable(R.drawable.contact_img)).setContent(intent);
        tabHost.addTab(spec);



        intent = new Intent().setClass(this, SecondActivity.class);
        spec = tabHost.newTabSpec("second").setIndicator("Dial",  res.getDrawable(R.drawable.dial_img)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, ThirdActivity.class);
        spec = tabHost.newTabSpec("third").setIndicator("Movie", res.getDrawable(R.drawable.movie_img)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, FourthActivity.class);
        spec = tabHost.newTabSpec("fourth").setIndicator("gellary", res.getDrawable(R.drawable.gellary_img)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, FifthActivity.class);
        spec = tabHost.newTabSpec("fifth").setIndicator("Opera", res.getDrawable(R.drawable.opera_img)).setContent(intent);
        tabHost.addTab(spec);

        intent = new Intent().setClass(this, SixthActivity.class);
        spec = tabHost.newTabSpec("sixth").setIndicator("Contacts", res.getDrawable(R.drawable.contact_img)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, SeventhActivity.class);
        spec = tabHost.newTabSpec("seventh").setIndicator("Dial",  res.getDrawable(R.drawable.dial_img)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, EightActivity.class);
        spec = tabHost.newTabSpec("eight").setIndicator("Movie", res.getDrawable(R.drawable.movie_img)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, NinthActivity.class);
        spec = tabHost.newTabSpec("ninth").setIndicator("Gellary", res.getDrawable(R.drawable.gellary_img)).setContent(intent);
        tabHost.addTab(spec);


        intent = new Intent().setClass(this, TenthActivity.class);
        spec = tabHost.newTabSpec("tenth").setIndicator("Opera", res.getDrawable(R.drawable.opera_img)).setContent(intent);
        tabHost.addTab(spec);

        // set the width of tab 
        for(int i=0;i<tabHost.getTabWidget().getChildCount();i++){
             tabHost.getTabWidget().getChildAt(i).getLayoutParams().width = 64;
        }



        //provide a method/function for setting height
       // set the Height of tab 
        for(int i=0;i<tabHost.getTabWidget().getChildCount();i++){
         tabHost.getTabWidget().getChildAt(i).getLayoutParams().height = 60;
       }

        // set the background color of tab (#50000000-transparent,#7392B5) 
         for(int i=0;i<tabHost.getTabWidget().getChildCount();i++){
             tabHost.getTabWidget().getChildAt(i).setBackgroundColor(Color.parseColor("#50000000")); 
         }

         //tabHost.getTabWidget().getChildAt(0).;
         tabHost.setCurrentTab(0);
    }


}

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"
        android:padding="5dp"   
        android:background="@drawable/zero"   
         >
          <TabHost android:id="@android:id/tabhost" xmlns:android="http://schemas.android.com/apk/res/android"
                 android:layout_width="fill_parent" 
                 android:layout_height="fill_parent"
                 android:visibility="visible">

            <HorizontalScrollView
            android:layout_width="wrap_content" 
            android:layout_height="fill_parent"
            android:scrollbars="none">   

                 <TabWidget android:layout_width="fill_parent"
                            android:layout_height="wrap_content"
                            android:id="@android:id/tabs"
                            android:layout_gravity="bottom"
                            android:tabStripEnabled="false"
                            />


                 </HorizontalScrollView> 

                <FrameLayout android:layout_width="match_parent"
                             android:layout_height="match_parent"
                              android:id="@android:id/tabcontent"/> 

        </TabHost>  


</LinearLayout>

1 Ответ

1 голос
/ 10 апреля 2012

Во-первых, решите, какой список функций вы хотите поддерживать. Кажется, у тебя уже есть идеи. Затем создайте открытые методы в вашем классе Tabbar, которые позволят пользователям настраивать его.

Идея может быть

public void setTabHeight(int dip) {
    //Code to set tab height goes here
}

Тогда люди смогут получить доступ к вашему Tabber и функциям, которые вы хотите, чтобы они имели.

Объем функциональности и общность использования Tabbar будут зависеть от вашего воображения и навыков проектирования.

...