অ্যান্ড্রয়েড: বটটমে ট্যাবগুলি


148

আমি এই সম্পর্কে কিছু বকবক দেখেছি, কিন্তু কিছুই নির্দিষ্ট। পর্দার নীচে কোনও ট্যাবজেটে ট্যাবগুলি রাখার কোনও উপায় আছে? যদি তাই হয়, কিভাবে?

আমি নিম্নলিখিত চেষ্টা করেছি, কিন্তু কাজ করে নি:

ক) ফ্রেমলেটের নীচে ট্যাবউজেট
সেট করা খ) ট্যাবজেটের মাধ্যাকর্ষণটিকে "নীচে" এ সেট করা

ধন্যবাদ! llappall


10
দয়া করে "কাজ করেননি" সংজ্ঞা দিন।
CommonsWare

আমি নীচের সাইট থেকে একটি ব্যবহার করি। এটি কাজ করছে http://kpbird.blogspot.com/2011/05/androidbottom-tabbar-control.html
জুলিয়াসরাজ

3
আপনি যদি ট্যাব হোস্টের মতো আইফোন চান তবে এখানে দেখুন
আদিল সোমো

উত্তর:


272

এখানে পর্দার নীচে ট্যাবগুলি পাওয়ার জন্য সবচেয়ে সহজ, সবচেয়ে শক্তিশালী এবং স্কেলেবল সমাধান sc

  1. আপনার উল্লম্ব লিনিয়ারলাইআউটে, ফ্রেম-লেআউটটিকে ট্যাবউজেটের উপরে রাখুন
  2. সেট layout_heightথেকে wrap_contentউভয় FrameLayout এবং TabWidget উপর
  3. ফ্রেমলআউট সেট করুন android:layout_weight="1"
  4. ট্যাবউজেটের সেট করুন android:layout_weight="0"(0 টি ডিফল্ট তবে জোর, পাঠযোগ্যতা ইত্যাদির জন্য)
  5. ট্যাবউজেট সেট করুন android:layout_marginBottom="-4dp"(নীচে বিভাজক অপসারণ করতে)

সম্পূর্ণ কোড:

<?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="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dp">

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:layout_weight="1"/>

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:layout_marginBottom="-4dp"/>

    </LinearLayout>

</TabHost>

3
ডিভাইডারটি আসলে শক্তভাবে কোডড is টোটাল বোমার
জেরেমি লোগান

6
আপনার এটি (বা কিছু) গৃহীত উত্তর হিসাবে নির্বাচন করা উচিত।
JediPotPie

4
গুগলের মানক ট্যাব উইজেটের উদাহরণ থেকে এখানে কেবলমাত্র প্রয়োজনীয় বিচ্যুতি ফ্রেমলাউটকে সেট layout_weight=1করা। এটি ট্যাব নিয়ন্ত্রণটিকে লিনিয়ারালাউট থেকে প্রথমে এর উচ্চতা "দাবি" করতে দেয়।
নিক ফারিনা

19
ট্যাবউজেটের নীচে ডিভাইডার থেকে মুক্তি পেতে, কেবল android:layout_marginBottom="-5px"ট্যাবউজেটে যুক্ত করুন। এটি ট্যাবউজেটটিকে পর্দার 5 পিক্সেলের নীচে সরিয়ে ফেলবে, কেবলমাত্র যাতে আপনি ডিভাইডারটি দেখতে না পান। ফ্রেমলাউট আকারে ক্ষতিপূরণ দেবে তাই এটি পুরোপুরি কার্যকর হয়। আমি নিশ্চিত নই যে বড় ডিভাইসে ডিভাইডারের আকার পরিবর্তন হয় কিনা। এর dpপরিবর্তে আপনাকে ব্যবহার করতে হতে পারে px
জেক উইলসন

1
আমি উত্তরে অপসারণ-বিভাজক মন্তব্য অন্তর্ভুক্ত করেছি।
আর্ন এভার্টসন

38

এটি ব্যবহার করে দেখুন;) ফ্রেমলআউট (@ আইডি / ট্যাব কনটেন্ট) এর সামগ্রীটি কেবল দেখুন, কারণ আমি জানি না যে এটি স্ক্রোলিংয়ের ক্ষেত্রে কীভাবে পরিচালনা করবে ... আমার ক্ষেত্রে এটি কাজ করে কারণ আমি তালিকাটি আমার ট্যাবগুলির সামগ্রী হিসাবে ব্যবহার করেছি । :) আশা করি এটা সাহায্য করবে.

<?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">
    <RelativeLayout 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent">
        <FrameLayout android:id="@android:id/tabcontent"
             android:layout_width="fill_parent" 
             android:layout_height="fill_parent"
             android:layout_alignParentTop="true" 
             android:layout_above="@android:id/tabs" />
    <TabWidget android:id="@android:id/tabs"
             android:layout_width="fill_parent" 
             android:layout_height="wrap_content"
             android:layout_alignParentBottom="true" />
    </RelativeLayout>
</TabHost>

4
+1 তবে আপনি কি স্ক্রিনের উপরে কালো / ধূসর বারটি লক্ষ্য করেছেন? আপনি কীভাবে এটি সরিয়ে ফেললেন?
Ahmet Emrah

আমি ফর্মের বাম দিকে ট্যাব উইজেট পোস্ট করতে এটি ব্যবহার করছি।
mr.j05hua

12

লাইন সরানোর একটি উপায় আছে।

1) এই টিউটোরিয়ালটি অনুসরণ করুন: টুকরোগুলি সহ অ্যান্ড্রয়েড-ট্যাবগুলি

2) তারপরে লেউড্রো যে প্রস্তাবিত রিলেটিভলআউট পরিবর্তনটি প্রয়োগ করুন (সমস্ত ফ্রেমলাউটগুলিতে লেআউট প্রপস প্রয়োগ করুন)।

আপনি আইটেম # 1 এর ট্যাব.এক্সএমএলে একটি চিত্র ভিউ যুক্ত করতে পারেন এবং ট্যাবগুলিতে দেখতে আইফোনের মতো দেখতে পাবেন।

আমি এখনই কী কাজ করছি তার একটি স্ক্রিনশট এখানে is আমার এখনও কিছু কাজ করতে হবে, প্রধানত আইকনগুলির জন্য একটি নির্বাচক তৈরি করুন এবং সমান অনুভূমিক বিতরণ নিশ্চিত করুন, তবে আপনি ধারণাটি পাবেন। আমার ক্ষেত্রে, আমি টুকরোগুলি ব্যবহার করছি, তবে একই প্রিন্সিপালের একটি স্ট্যান্ডার্ড ট্যাব দৃশ্যে প্রয়োগ করা উচিত।

এখানে চিত্র বর্ণনা লিখুন


আপনি এটি পোস্ট করার পরে এটি বেশ কিছুক্ষণ হয়ে গেছে, তবে আপনার লিঙ্কটি এখন nginx এ আপনাকে স্বাগতম বলেছে ! এবং পৃষ্ঠায় আর কিছুই নেই।
ড্রয়েডেভ

1
এটি আমার সাইট ছিল না, দুর্ভাগ্যক্রমে এটির আমার নিয়ন্ত্রণ নেই। যদিও এই সময়ের পরে, সিস্টেমগুলি যথেষ্ট পরিবর্তিত হয়েছে যে আপনার সম্ভবত আপনার অ্যান্ড্রয়েড ব্যবহারকারীদের জন্য এই ধরণের ইন্টারফেস প্রয়োগ করা উচিত নয়, তারা আশা করবেন যে এখন জিনিসগুলি কিছুটা আলাদাভাবে কাজ করবে।
ব্রিল প্যাপিন

3

এটি অ্যান্ড্রয়েডের সমস্ত সংস্করণে (বিশেষত কাস্টম ইউআই স্টাফ সহ) এর জন্য কাজ করবে কিনা তা নিশ্চিত নয় তবে আমি নীচে ধূসর দণ্ডটি সরাতে সক্ষম হয়েছি

 android:layout_marginBottom="-3dp"

ট্যাবউজেট এক্সএমএলে ...


3

আপনারা যারা ট্যাব উইজেটের বিভাজন রেখাটি মুছে ফেলার চেষ্টা করছেন তাদের জন্য, এখানে একটি উদাহরণ প্রকল্প (এবং এটি সম্পর্কিত টিউটোরিয়াল) রয়েছে যা ট্যাবগুলি কাস্টমাইজ করার জন্য এবং এইভাবে ট্যাবগুলির নীচে থাকা অবস্থায় সমস্যাগুলি সরিয়ে দেওয়ার জন্য দুর্দান্ত কাজ করে। গ্রহন প্রকল্প: অ্যান্ড্রয়েড-কাস্টম-ট্যাবগুলি ; মূল ব্যাখ্যা: ব্লগ ; আশা করি এটি সাহায্য করেছে।


3

একটি ট্যাব ক্রিয়াকলাপের নীচে ট্যাবগুলি প্রদর্শনের দুটি উপায় রয়েছে।

  1. আপেক্ষিক বিন্যাস ব্যবহার করে
  2. লেআউট_ওয়েট অ্যাট্রিবিউট ব্যবহার করা হচ্ছে

আরও তথ্যের জন্য লিঙ্কটি চেক করুন


3
<?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:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1" />

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:background="#252a31"
            android:tabStripEnabled="false" >
        </TabWidget>
    </LinearLayout>

</TabHost>

1

এটি আপনি যা খুঁজছেন ঠিক তা নাও হতে পারে (পর্দার নীচে আপনার ট্যাবগুলি প্রেরণ এটি কোনও "সহজ" সমাধান নয়) তবুও এটি একটি আকর্ষণীয় বিকল্প সমাধান যা আমি আপনাকে পতাকাঙ্কিত করতে চাই:

স্ক্রোললেবলবহস্টটি ট্যাবহোস্টের মতো আচরণের জন্য ডিজাইন করা হয়েছে তবে আরও আইটেম ফিট করার জন্য অতিরিক্ত স্ক্রোলভিউ দিয়ে ...

সম্ভবত এই উন্মুক্ত উত্স প্রকল্পটি খনন করে আপনি আপনার প্রশ্নের উত্তর খুঁজে পাবেন। আমি যদি কিছু সহজ দেখি তবে আমি আপনার কাছে ফিরে আসব।


1

অ্যান্ড্রয়েড ট্যাবগুলি স্ক্রিনের নীচে রাখার চেষ্টা করার সময় আমার একই সমস্যা ছিল। আমার পরিস্থিতিটি ছিল কোনও লেআউট ফাইল ব্যবহার না করা এবং কোডে ট্যাব তৈরি করা নয়, আমি প্রতিটি ট্যাব থেকে ক্রিয়াকলাপ চালিয়ে যাচ্ছিলাম যা অন্যান্য পদ্ধতির সাহায্যে কিছুটা জটিল বলে মনে হয়েছিল, তাই সমস্যাটি কাটিয়ে ওঠার জন্য নমুনা কোডটি এখানে:

যোগ-ট্যাব-ইন-অ্যান্ড্রয়েড-এবং-স্থাপন-তাদের


1

হ্যাঁ, দেখুন: লিঙ্ক , তবে তিনি এক্সএমএল লেআউটগুলি ব্যবহার করেছেন, নতুন ট্যাব তৈরি করার জন্য ক্রিয়াকলাপ নয়, তাই তার এক্সএমএল কোডটি (ফ্রেমলাইআউট - 0 পিক্সের জন্য প্যাডিংটপ সেট করুন) এবং তারপরে কোডটি লিখুন:

public class SomeActivity extends ActivityGroup {

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

    TabHost tab_host = (TabHost) findViewById(R.id.edit_item_tab_host); 

    tab_host.setup(this.getLocalActivityManager());

    TabSpec ts1 = tab_host.newTabSpec("TAB_DATE"); 
    ts1.setIndicator("tab1"); 
    ts1.setContent(new Intent(this, Registration.class)); 
    tab_host.addTab(ts1); 

    TabSpec ts2 = tab_host.newTabSpec("TAB_GEO"); 
    ts2.setIndicator("tab2"); 
    ts2.setContent(new Intent(this, Login.class)); 
    tab_host.addTab(ts2); 

    TabSpec ts3 = tab_host.newTabSpec("TAB_TEXT"); 
    ts3.setIndicator("tab3"); 
    ts3.setContent(new Intent(this, Registration.class)); 
    tab_host.addTab(ts3); 

    tab_host.setCurrentTab(0);      


}

}


0

আমি স্থিতিশীল কাজের জন্য এই কোডটি পুনঃব্যবহার করছি, এটি ট্যাবে নেস্টেড টুকরাগুলির জন্য অনুকূলিত হয়েছে (উদাহরণস্বরূপ নেস্টেড ম্যাপফ্র্যাগমেন্ট) এবং "ক্রিয়াকলাপগুলি রাখবেন না" পরীক্ষিত: https://stackoverflow.com/a/23150258/2765497

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.