ট্যাবলআউট ব্যবহার করার সময় আমি কীভাবে কোনও ট্যাব পটভূমির রঙ পরিবর্তন করব?


119

এটি মূল ক্রিয়াকলাপে আমার কোড

public class FilterActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_filter);

    // Get the ViewPager and set it's PagerAdapter so that it can display items
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    PageAdapter pageAdapter = new PageAdapter(getSupportFragmentManager(), FilterActivity.this);
    viewPager.setAdapter(pageAdapter);

    // Give the TabLayout the ViewPager
    final TabLayout tabLayout = (TabLayout) findViewById(R.id.sliding_tabs);
    tabLayout.setupWithViewPager(viewPager);



  }
}

এবং এটি এক্সএমএলে আমার কোড

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <include
        android:id="@+id/app_bar"
        layout="@layout/app_bar">
    </include>

    <android.support.design.widget.TabLayout
        android:id="@+id/sliding_tabs"
        android:layout_width="fill_parent"
        style="@style/MyCustomTabLayout"
        android:layout_height="48dp"/>

    <android.support.v4.view.ViewPager
        android:id="@+id/viewpager"
        android:layout_width="match_parent"
        android:layout_height="0px"
        android:layout_weight="1"
        android:background="@android:color/white" />

</LinearLayout>

আমি যখন একটি ট্যাবটি নির্বাচন করি তখন এর পটভূমির রঙ পরিবর্তন করতে চাই

উত্তর:


285

@ 如果 What worked ডিজে প্রস্তাবিত হিসাবে শেষ পর্যন্ত আমার জন্য যা কাজ করেছে তা অনুরূপ, তবে ফাইলটিতে থাকা tabBackgroundউচিত layoutএবং এটির ভিতরে থাকা উচিত নয়style , তাই দেখে মনে হচ্ছে:

res/layout/somefile.xml:

<android.support.design.widget.TabLayout
    ....
    app:tabBackground="@drawable/tab_color_selector"
    ...
    />

এবং নির্বাচক res/drawable/tab_color_selector.xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/tab_background_selected" android:state_selected="true"/>
    <item android:drawable="@color/tab_background_unselected"/>
</selector>

2
আপনি সেই বৈশিষ্ট্যে একটি রঙের মানও যুক্ত করতে পারেন: যেমন: অ্যাপ্লিকেশন: ট্যাবব্যাকগ্রাউন্ড: @ রঙ / রঙআসেন্ট
মার্টিনেজ

সমাধানের জন্য আপনাকে ধন্যবাদ। যাইহোক, আমি এটির সাথে ডিফল্ট রিপল প্রভাবটি হারিয়েছি।
কেন রতানাচাই এস

4
আমি কীভাবে এই অগ্রগতি করতে পারি?
টিএসআর

1
@ টিএসআর, যদি প্রতিটি ট্যাবের জন্য আপনার বিভিন্ন রঙের প্রয়োজন না হয় তবে আপনি এটি করতে পারেন tabLayout.setBackgroundColor(colorInt)। যদি প্রতিটি ট্যাব এর জন্য আপনার এটির প্রয়োজন হয়, আপনি আপনার ট্যাবলেট
বাচ্চাদের 11/15

1
চেহারা এবং অনুভূতির উন্নতি করতে, আমি মনে করি আমাদের যুক্ত করা উচিত_আপনি : <আইটেম অ্যান্ড্রয়েড: অঙ্কনযোগ্য = "@ রঙ / ট্যাবব্যাকগ্রাউন্ড_স্লাইডেড" অ্যান্ড্রয়েড: রাষ্ট্র_প্রেসড = "সত্য" />
কোড একবার

21

আপনি এটি চেষ্টা করতে পারেন:

<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="tabBackground">@drawable/background</item>
</style>

আপনার ব্যাকগ্রাউন্ডের এক্সএমএল ফাইলটিতে:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:drawable="@color/white" />
    <item android:drawable="@color/black" />
</selector>

এবং কিভাবে এটি বাস্তবায়ন?
টিএসআর 12

13

এক্সএমএলে যোগ করুন:

<android.support.design.widget.TabLayout
    ....
    app:tabBackground="@drawable/tab_color_selector"
    ...
    />

এবং অঙ্কনযোগ্য ফোল্ডার, ট্যাব_লং_লেক্টোর.এক্সএমএল তৈরি করুন

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/tab_background_selected" android:state_selected="true"/>
    <item android:drawable="@color/tab_background_unselected"/>
</selector>

5

আপনি কি এপিআই পরীক্ষা করার চেষ্টা করেছেন ?

আপনাকে OnTabSelectedListenerইভেন্টটির জন্য একটি শ্রোতা তৈরি করতে হবে , তারপরে কোনও ব্যবহারকারী যখন কোনও ট্যাব নির্বাচন করেন তবে এটি সঠিক কিনা তা পরীক্ষা করা উচিত, তারপরে ব্যাকগ্রাউন্ডের রঙটি পরিবর্তন করুন tabLayout.setBackgroundColor(int color), বা যদি এটি সঠিক ট্যাব না হয়ে থাকে তবে নিশ্চিত হয়ে নিন যে আপনি আবার ফিরে গেছেন আবার একই রঙের সাথে আবার সাধারণ রঙ।


হ্যাঁ, আমি এটি চেষ্টা করেছি, তবে ট্যাবলআউট পুরো ট্যাব উইজেটের রঙ পরিবর্তন করে এবং আমি ট্যাবলাইআউটে কোনও পদ্ধতি খুঁজে পাই না ab ট্যাব যা কেবলমাত্র ট্যাব রঙ পরিবর্তন করে এবং অন্যান্য ট্যাব একই রঙের সাথেই থাকে।
জোয়েল লারা

আপনি যে পরে আছেন তা আমি 100% নিশ্চিত নই। আপনি যদি কেবলমাত্র একটি ট্যাবটির শরীরে রঙিন করতে চান তবে আপনি সেই ট্যাবের ভিতরে একটি ধারক / দর্শন যোগ করতে পারেন, তবে আপনাকে এক্সএমএলে সাধারণের মতো ধারক / দর্শন পটভূমির রঙ সেট করতে সক্ষম হতে হবে, উদাহরণস্বরূপ নিম্নলিখিতটি ব্যাকগ্রাউন্ড সেট করবে লালandroid:background=FF0000
sorifiend

: এই অন্য কোন প্রশ্ন / উত্তর আপনাকে সাহায্য করতে পারি stackoverflow.com/questions/30904138/... এবং stackoverflow.com/a/30755351/1270000
sorifiend

3

আপনি এটি এক্সএমএলে রাখতে পারেন।

<android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        app:tabTextColor="@color/colorGray"
        app:tabSelectedTextColor="@color/colorWhite"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

2

যেহেতু আমি আমার পক্ষে সর্বোত্তম এবং উপযুক্ত বিকল্পটি পেয়েছি এবং এটি অ্যানিমেশনের সাথেও কাজ করবে।

আপনি indicatorএটি ব্যাকগ্রাউন্ড হিসাবে স্ব ব্যবহার করতে পারেন ।

আপনি app:tabIndicatorGravity="stretch"ব্যাকগ্রাউন্ড হিসাবে ব্যবহার করতে অ্যাট্রিবিউট সেট করতে পারেন।

উদাহরণ:

   <android.support.design.widget.TabLayout
        android:id="@+id/tab_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:tabIndicatorGravity="stretch"
        app:tabSelectedTextColor="@color/white"
        app:tabTextColor="@color/colorAccent">

        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Chef" />


        <android.support.design.widget.TabItem
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="User" />

    </android.support.design.widget.TabLayout>

আশা করি এটি আপনাকে সহায়তা করবে।


এটি স্বয়ংক্রিয়ভাবে অ্যাকসেন্টের রঙ নিচ্ছে। অ্যাকসেন্টের রঙ পরিবর্তন না করে কীভাবে এটি আলাদা রঙ দেওয়া যায়। ধন্যবাদ
MindRoasterMir

1
আপনি app:tabIndicatorColor@ মাইন্ডরোস্টারমির ব্যবহার করতে পারেন
প্রতীক

1

আপনি প্রতিটি ট্যাব এর পটভূমি বা রিপল রঙ পরিবর্তন করতে পারেন:

    //set ripple color for each tab
    for(int n = 0; n < mTabLayout.getTabCount(); n++){

        View tab = ((ViewGroup)mTabLayout.getChildAt(0)).getChildAt(n);

        if(tab != null && tab.getBackground() instanceof RippleDrawable){
            RippleDrawable rippleDrawable = (RippleDrawable)tab.getBackground();
            if (rippleDrawable != null) {
                rippleDrawable.setColor(ColorStateList.valueOf(rippleColor));
            }
        }
    }

1

এই সম্পর্কে কিছুটা গোলমাল করার পরে আমি কীভাবে পছন্দসই চেহারা পেয়েছি (কমপক্ষে এমুলেটারে) এবং এটি লহরাকে প্রভাবিত করে।

রঙ যুক্তি সহ ট্যাব নির্বাচনকারী সহ ট্যাব বিন্যাস

<com.google.android.material.tabs.TabLayout
    android:id="@+id/tabs"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:tabBackground="@drawable/tab_selector"
    app:tabIconTint="@drawable/tab_selector"
    app:tabIconTintMode="src_atop"
    app:tabTextColor="@drawable/tab_selector" />

এবং @drawable/tab_selector:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorPrimary" android:drawable="@color/colorPrimaryDark" android:state_selected="true" />
    <item android:color="@color/colorPrimaryDark" android:drawable="@color/colorPrimary" />
</selector>

এফওয়াইআই: আমি colorযুক্তি যুক্ত করার আগে এমুলেটরটি এটি দেখিয়েছিল @drawable/tab_selector:

রঙ যুক্তি ছাড়াই ট্যাব নির্বাচকের সাথে ট্যাব বিন্যাস


0

আপনি এই বৈশিষ্ট্যটি দ্বারা ট্যাবের পটভূমি রঙ পরিবর্তন করতে পারেন

<android.support.design.widget.TabLayout
android:id="@+id/tabs"
style="@style/CategoryTab"
android:layout_width="match_parent"
android:layout_height="wrap_content"
'android:background="@color/primary_color"/>'

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