2011-08-22 8 views
13

मैं देख रहा हूं कि एंड्रॉइड के लिए MyTubo (या GroupMe) जैसे मेरे एप्लिकेशन के नीचे एक समान बार कैसे प्राप्त करें। कुछ इस तरह:एंड्रॉइड पर MyTubo की तरह नीचे बार [या आईफोन की तरह नेविगेशन बार] कैसे करें?

MyTubo

GroupMe

अपने जवाब के लिए धन्यवाद।

+0

यह सिर्फ अनुकूलित छवि पृष्ठभूमि – Blundell

+1

यह शायद अधिक होने की संभावना एक RadioGroup और radiobuttons – Rob

+0

का उपयोग कर एक कस्टम दृश्य इसका एक कस्टम दृश्य जोड़ दिया जाता है के साथ एक TabWidget है के साथ मदद करने के लिए अन्य विचारों के शीर्ष पर – Azlam

उत्तर

22
इसके अलावा मेरे लिए

एक अच्छा तरीका एंड्रॉयड में iPhone की UITabBarController के लिए कुछ इसी तरह RadioGroup प्लस radiobuttons का उपयोग करने में होते हैं प्राप्त करने के लिए। इस दृष्टिकोण का अच्छा यह है कि आप केवल इरादे और गतिविधि के बजाय, फ्रैगमेंट या अपनी पसंद के किसी भी चीज़ का उपयोग कर सकते हैं।

Pied Piper के समान परिणाम प्राप्त करने के लिए मैंने blog post लिखा, लेकिन रेडियोग्रुप और रेडियोबटन का उपयोग करके। यह इतालवी में है, लेकिन, सौभाग्य से, कोड अंतरराष्ट्रीय स्तर पर बोलती है;) यहाँ परिणाम: Android navigation bar

अधिक विस्तृत नेविगेशन पट्टी डिजाइन के लिए (मूल प्रश्न में हैं) की तरह, मुझे लगता है यह शांत और स्मार्ट drawable का केवल एक बात है ;)

+0

+1 ग्रेट आइडिया मैन, ऐसा करने के लिए रेडियोबूटन का उपयोग करना 10 गुना बेहतर है, यह उत्तर –

+0

स्वीकार किया जाना चाहिए क्या आप अपना प्रश्न स्पष्ट कर सकते हैं? – Rainbowbreeze

+0

+1 मैंने आपके ब्लॉग को देखा और यह अच्छी तरह से किया गया .... –

13

यह TabActivity के साथ संभव हो सकता है। बातें निम्नलिखित

आवश्यकताओं ...

  1. TabWidget साथ TabSpec होने बिल्ला या किसी अन्य विशेष प्रभाव
  2. और अंत में TabActivity कि Activities होस्ट करता है के लिए प्रत्येक TabSpec
  3. लेआउट के लिए नीचे
  4. चयनकर्ता पर TabHost और ActivityGoups

मैंने एक स्माइलर स्क्रीन लेआउट बनाया है।

enter image description here

के बाद कदम हैं ...

1. आप अपने TabHost के तल पर TabWidget की आवश्यकता होगी अपने res/लेआउट/host.xml में जोड़ने

<?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" 
    android:background="#777777"> 
    <RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
     <RelativeLayout 
      android:id="@+id/layTab" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:paddingLeft="10dp" 
      android:paddingRight="10dp" 
      android:background="@drawable/your_navigatio_tab_background_drawable" 
      android:layout_alignParentBottom="true" 
      android:layout_centerVertical="true" 
      > 
      <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_centerVertical="true" 
      /> 
     </RelativeLayout> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_alignParentTop="true" 
      android:layout_above="@id/layTab"/> 
    </RelativeLayout> 
</TabHost> 

2. अगला आपको selectors की आवश्यकता होगी, प्रत्येक आपके TabSpec के लिए, यहां डेमो चयनकर्ता है: res/drawable/h omeselector.xml

<?xml version="1.0" encoding="UTF-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_selected="false" android:drawable="@drawable/home_image_when_not_selected"/> 
    <item android:state_selected="true" android:drawable="@drawable/home_selected" /> 
</selector> 

3. इसके अलावा, आप TabSpecs के लिए लेआउट के लिए आवश्यक होगा कि बिल्ला या कुछ भी विशेष लेआउट प्रभाव पड़ रहा, यहां उदाहरण के लिए मेरी गाड़ी TabSpec होने बिल्ला तो मैं बना दिया है निम्नलिखित लेआउट जो कहा जाता है: रेस /layout/cartbottom.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/cartselector" 
    android:gravity="right" 
    > 
<Button 
    android:id="@+id/redbtn" 
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content" 
    android:layout_alignParentTop="true" 
    android:text="00" 
    android:paddingBottom="3dp" 
    android:gravity="right|center_vertical" 
    android:paddingRight="9dp" 
    android:textSize="11dp" 
    android:textStyle="bold" 
    android:textColor="#ffffff" 
    android:background="@drawable/red_badge_drawable" 
/> 
</RelativeLayout> 

4. और अंत में TabActivity

package x.y; 

import android.app.TabActivity; 
import android.content.Intent; 
import android.database.DatabaseUtils; 
import android.database.sqlite.SQLiteDatabase; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TabHost; 
import android.widget.Toast; 
import android.widget.TabHost.TabSpec; 

public class Host extends TabActivity { 

    public static Button btnRed; // Works as a badge 
           //Declared static; so it can be accessed from all other Activities 
    public static TabHost tabHost; 

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

     tabHost = (TabHost)findViewById(android.R.id.tabhost); 

     TabSpec homeTabSpec = tabHost.newTabSpec("tid1"); 
     TabSpec signinTabSpec = tabHost.newTabSpec("tid2"); 
     TabSpec cartTabSpec = tabHost.newTabSpec("tid3"); 
     TabSpec moreTabSpec = tabHost.newTabSpec("tid4"); 
     TabSpec searchTabSpec = tabHost.newTabSpec("tid5"); 

     //Make Intents to your Activities or ActivityGroups 
     Intent intent1 = new Intent(this, Cart.class); 
     Intent intent2 = new Intent(this, Home.class); 
     Intent intent3 = new Intent(this, SignIn.class); 
     Intent intent4 = new Intent(this, Search.class); 
     Intent intent5 = new Intent(this, More.class); 

     LayoutInflater layoutInflater = this.getLayoutInflater(); 
     View layout_with_badge = layoutInflater.inflate(R.layout.cartbottom, null); 
     btnRed = (Button) layout_with_badge.findViewById(R.id.redbtn); 

     String cnt = String.valueOf("0");// Number on the badge 

     btnRed.setBackgroundDrawable(getResources().getDrawable(R.drawable.red_badge_image_drawable)); 

     btnRed.setText(cnt); 
     btnRed.setOnClickListener(new OnClickListener() { 

      //@Override 
      public void onClick(View v) { 
       tabHost.setCurrentTab(2); 
      } 
     }); 

     cartTabSpec.setIndicator(layout_with_badge).setContent(intent1); 

     Drawable d = getResources().getDrawable(R.drawable.homeselector); 
     ImageView img1 = new ImageView(this); 
     img1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     img1.setImageDrawable(d); 
     homeTabSpec.setIndicator(img1).setContent(intent2); 

     d = getResources().getDrawable(R.drawable.signinselector); 
     img1 = new ImageView(this); 
     img1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     img1.setImageDrawable(d); 
     signinTabSpec.setIndicator(img1).setContent(intent3); 

     d = getResources().getDrawable(R.drawable.searchselector); 
     img1 = new ImageView(this); 
     img1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     img1.setImageDrawable(d); 
     searchTabSpec.setIndicator(img1).setContent(intent4); 

     d = getResources().getDrawable(R.drawable.moreselector); 
     img1 = new ImageView(this); 
     img1.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
     img1.setImageDrawable(d); 
     moreTabSpec.setIndicator(img1).setContent(intent5); 

     /* Add tabSpec to the TabHost to display. */ 
     tabHost.addTab(homeTabSpec); 
     tabHost.addTab(signinTabSpec); 
     tabHost.addTab(cartTabSpec); 
     tabHost.addTab(searchTabSpec); 
     tabHost.addTab(moreTabSpec); 

    } 
} 

यह कैसे लग रहा है ...

enter image description here

+0

ग्रेट पोस्ट! मुझे यह सब कोड प्रदान करने के लिए धन्यवाद, मैं कोशिश करूँगा, मुझे लगता है कि यह समाधान होगा। – Pipeline

+0

क्या चाल आपके लिए काम कर रही है? –

+0

क्षमा करें मेरे पास इसका परीक्षण करने का समय नहीं है, मैं जल्द से जल्द कोशिश करूंगा! – Pipeline

7

एंड्रॉइड के चश्मा प्रति, कृपया ऐसा न करें। यह एक आईओएस सम्मेलन है और एंड्रॉइड मंच पर काम नहीं करता है।

http://developer.android.com/design/patterns/pure-android.html

नीचे टैब सलाखों का उपयोग न करें

अन्य प्लेटफार्मों एप्लिकेशन की दृश्यों के बीच स्विच करने के लिए नीचे टैब बार का उपयोग करें। प्रति मंच सम्मेलन, दृश्य नियंत्रण के लिए एंड्रॉइड के टैब स्क्रीन के शीर्ष पर एक्शन बार में दिखाए गए हैं। इसके अलावा, एंड्रॉइड ऐप्स स्प्लिट एक्शन बार पर कार्रवाइयों को प्रदर्शित करने के लिए नीचे बार का उपयोग कर सकते हैं।

आप एंड्रॉयड प्लेटफॉर्म पर अन्य एप्लिकेशन के साथ एक सुसंगत अनुभव बनाने के लिए इस निर्देश का पालन करना चाहिए और कार्यों और Android पर दृश्य में स्विच बीच भ्रम की स्थिति से बचने के लिए।

+7

जोड़ सकता हूं समस्या हमेशा क्लाइंट नीचे टैब बार के लिए पूछती है ताकि कंपनी :(। वे एंड्रॉइड फोन में एक आईफोन ऐप चलाने के लिए चाहते हैं। :( –

+4

अब google इसका उपयोग करता है :) https://www.google.com/design/spec/components/bottom-navigation.html – MilapTank

+0

@ मिलापटैंक हाँ, अब वे करते हैं। Spotify का नया एंड्रॉइड संस्करण इसे लागू करता है। मुझे कहना है, मुझे पसंद नहीं है यह। –

3

मैं जानता हूँ कि यह सीधे सवाल का जवाब देने के लिए संबंधित नहीं है, लेकिन मुझे लगता है यह ऐसा लगता है कि गूगल नीचे सलाखों का उपयोग कर के बारे में उनके मन बदल गया है उल्लेख करना महत्वपूर्ण है। (से शानदार टिप्पणी के लिए धन्यवाद @ milapTank मैं कुछ खुदाई)

पिछले महीने (2016 फरवरी) गूगल कह रहे थे "का प्रयोग न करें नीचे टैब वाले सलाखों" तक

किया बाहर की जांच इस कैश्ड पृष्ठ: https://web.archive.org/web/20160211061655/http://developer.android.com/design/patterns/pure-android.html

वर्तमान में (मार्च 2016) वे इस नोट को हटा दिया और आपको कुछ एनआई भी जोड़ा ce पेज डिजाइन :)

http://developer.android.com/design/patterns/pure-android.html

https://www.google.com/design/spec/components/bottom-navigation.html#bottom-navigation-behavior

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