2011-05-27 7 views
8

एंड्रॉइड टैबहोस्ट के लिए डिफ़ॉल्ट शैली सीधे एंड्रॉइड सिस्टम के लिए ठीक काम करती है। हालांकि, एचटीसी सेंस पर, वे अंधेरे पृष्ठभूमि पर अंधेरे पाठ का उपयोग करते हैं, जो अपठनीय है।एक सार्वभौमिक टैबहोस्ट शैली की तलाश है जो एंड्रॉइड, एचटीसी सेंस, सैमसंग, आदि पर काम करेगी

TabHost from HTC Sense UI

एक TabHost एंड्रॉयड खाल के सभी विभिन्न जायके भर में दिखाई दे रहे पाठ है कि राशि के लिए सबसे आसान तरीका क्या है? यदि संभव हो तो मैं पूरी तरह से कस्टम लुक-एंड-महसूस नहीं करना चाहूंगा।

मेरे targetSDK 10 और मेरे minSDK 7.

+0

संबंधित: http://stackoverflow.com/questions/4127446/custom-style-for-androids-tabwidget और http://stackoverflow.com/questions/3647821/android-highlighted-tab-of-tabwidget-not -readable-on-htc-sense – emmby

उत्तर

4

है मैं तुम्हें TabWidget से पूरी तरह से स्वतंत्र हो जाते हैं और बनाने के लिए अपने स्वयं के नेविगेशन, जो आप फिर भी अनुकूलित कर सकते हैं आप चाहते हैं और परेशान नहीं करते सलाह दे देंगे कठोर TabWidget के साथ। मैं भयानक TabHost फेंक मतलब यह नहीं है, यह एक कस्टम नेविगेशन के साथ TabHost उपयोग करने के लिए आसान है क्योंकि: चला गया के रूप में

सबसे पहले अपने TabWidget सेट:

<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"> 
    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone"/> 

और फिर बनाते हैं तो आप जगह में नेविगेशन के मालिक हैं इसका आप भी इस तरह (हार्डवेयर मेनू बटन के साथ) एक मेनू या कुछ और बना सकते हैं:

<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"> 
    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:visibility="gone"/> 
     <!-- content of your tabs--> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_above="@id/slider_stub" 
      android:background="@color/overview_banner_bg_down"/> 
     <!-- custom slider with horizontal scrollable radio buttons--> 
     <com.example.WrappingSlidingDrawer 
      android:id="@+id/tab_slider" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:handle="@+id/tab_slider_handle" 
      android:content="@+id/tab_scroller"> 
      <RelativeLayout 
       android:id="@+id/tab_slider_handle" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:background="@drawable/def_slider"> 
      </RelativeLayout> 
      <HorizontalScrollView 
       android:id="@+id/tab_scroller" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:fadeScrollbars="false" 
       android:scrollbarAlwaysDrawHorizontalTrack="true" 
       android:scrollbarTrackHorizontal="@drawable/scrollbar_horizontal_track" 
       android:scrollbarThumbHorizontal="@drawable/scrollbar_horizontal_thumb" 
       android:fillViewport="true" 
       android:scrollbarSize="3dip" 
       android:fadingEdgeLength="80dp" 
       android:background="#343534"> 
       <RelativeLayout 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"> 
        <RadioGroup 
         android:id="@+id/custom_tabs" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_centerHorizontal="true" 
         android:gravity="center" 
         android:orientation="horizontal" 
         android:checkedButton="@+id/tab_overview"> 
         <RadioButton 
          android:id="@+id/tab_overview" 
          android:layout_height="55dp" 
          android:layout_width="55dp" 
          android:button="@null" 
          android:background="@drawable/def_checktab_overview"/> 
         <RadioButton 
          android:id="@+id/tab_news" 
          android:layout_height="55dp" 
          android:layout_width="55dp" 
          android:button="@null" 
          android:background="@drawable/def_checktab_news"/> 
          .....etc....your tabs...... 
        </RadioGroup> 
       </RelativeLayout> 
      </HorizontalScrollView> 
     </com.example.WrappingSlidingDrawer> 
    </RelativeLayout> 
</TabHost> 

अब आप कोड में क्या करना है:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main_tab_layout); 

    setTabs(); 

    RadioGroup tabs = (RadioGroup) findViewById(R.id.custom_tabs); 

    tabs.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(RadioGroup group, int checkedId) { 
      switch (checkedId) { 
      case R.id.tab_overview: 
       getTabHost().setCurrentTab(0); 
       break; 
      case R.id.tab_news: 
       getTabHost().setCurrentTab(1); 
       break; 
      ....etc..... 
      } 
     } 
    }); 
} 

/** 
* Delegate tab creation and adding. 
*/ 
private void setTabs() { 
    // add the necessary tabs 
    addTab(R.string.tab_overv_tag, OverviewActivityGroup.class); 
    addTab(R.string.tab_news_tag, NewsActivityGroup.class); 
      .....etc..... 
} 

/** 
* Create a tab with an Activity and add it to the TabHost 
* 
* @param tagId 
*   resource id of the string representing the tag for finding the tab  
* @param activity 
*   the activity to be added 
*/ 
private void addTab(int tagId, Class<? extends ActivityGroup> activity) { 
    // create an Intent to launch an Activity for the tab (to be reused) 
    Intent intent = new Intent().setClass(this, activity); 
    // initialize a TabSpec for each tab and add it to the TabHost 
    TabHost.TabSpec spec = usedTabHost.newTabSpec(getString(tagId)); 
    // use layout inflater to get a view of the tab to be added 
    View tabIndicator = getLayoutInflater().inflate(R.layout.tab_indicator, getTabWidget(), false); 
    spec.setIndicator(tabIndicator); 
    spec.setContent(intent); 
    usedTabHost.addTab(spec); 
} 

पूरे सूचक सामान btw जरूरत नहीं है। ^^ आपके गतिविधि समूहों में आपको उपयुक्त गतिविधियां, आदि सेट करना होगा। आप सामान जानते हैं।

आप अपने नेविगेशन के लिए कुछ भी उपयोग कर सकते हैं और अभी भी टैबहोस्ट के फायदों का उपयोग कर सकते हैं। बस उस TabWidget से परेशान मत करो। ;)

1

कुछ शोध के बाद मुझे लगता है कि सबसे अच्छा विकल्प एक्शनबार के टैबड इंटरफ़ेस का उपयोग करना होगा क्योंकि यह शैली के लिए और अधिक आसान दिखता है। ActionBarSherlock एंड्रॉइड 1.6 से शुरू होने वाले उपकरणों के लिए एक्शनबार के लिए संगतता परत प्रदान करता है। लाइब्रेरी का उपयोग करके आप क्या प्राप्त कर सकते हैं Here you can look at examples

+1

एक्शनबारशरॉक अद्भुत है और मैं इसका भी उपयोग कर रहा हूं, इसलिए मैं इस समाधान की अनुशंसा करता हूं। :-) – einschnaehkeee

संबंधित मुद्दे