স্পিনার পাঠ্যের আকার এবং পাঠ্যের রঙ কীভাবে পরিবর্তন করবেন?


432

আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে, আমি স্পিনার ব্যবহার করছি এবং আমি এসকিউএল ডাটাবেস থেকে স্পিনারটিতে ডেটা লোড করেছি এবং এটি সঠিকভাবে কাজ করছে। এখানে তার জন্য কোড।

Spinner spinner = (Spinner) this.findViewById(R.id.spinner1);
List<String> list = new ArrayList<String>();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>  (this,android.R.layout.simple_spinner_item, list);
cursor.moveToFirst();

list.add("All Lists");

if (cursor.getCount() > 0) {
    for (int i = 0; i < cursor.getCount(); i++) {
        keyList[i] = cursor.getString(cursor.getColumnIndex(AndroidOpenDbHelper.KEYWORD));
        list.add(keyList[i]);
        cursor.moveToNext();
    }
}
Database.close();
cursor.close();
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);

এখন আমি স্পিনার ডেটাটির পাঠ্য রঙ এবং পাঠ্যের আকার পরিবর্তন করতে চাই। আমি আমার এক্সএমএল ফাইলে আমার স্পিনার ট্যাগটিতে নিম্নলিখিত এক্সএমএল লাইনগুলি ব্যবহার করেছি, তবে এটি কাজ করছে না।

android:textColor="@android:color/white"
android:textSize="11dp"

আমি কীভাবে আমার স্পিনারটির পাঠ্য রঙ এবং পাঠ্য আকার পরিবর্তন করতে পারি?


নিম্নলিখিত সাইটগুলি পরীক্ষা করুন [স্ট্যাকওভারফ্লো] [1] [স্ট্যাকওভারফ্লো] [2] [স্ট্যাকওভারফ্লো] [3] আমি মনে করি এটি সদৃশ প্রশ্ন [1]: স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 4880413/… [2]: স্ট্যাকওভারফ্লো / প্রশ্নগুলি / 4989817 / ... [3]: stackoverflow.com/questions/5836254/...
user1203673


1
পাঠ্য আকারের জন্য সঠিক হ'ল এসপি ... অ্যান্ড্রয়েড: টেক্সট সাইজ = "11 স্প"
ডিয়েগো

উত্তর:


780

আপনার স্পিনার আইটেমটির জন্য একটি কাস্টম এক্সএমএল ফাইল তৈরি করুন।

spinner_item.xml:

এই ফাইলটিতে পাঠ্যকে আপনার পছন্দসই রঙ এবং আকার দিন।

<?xml version="1.0" encoding="utf-8"?>

<TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="left"  
    android:textColor="#FF0000"         
    android:padding="5dip"
    />

আপনার স্পিনার আইটেমগুলি প্রদর্শন করতে এখন এই ফাইলটি ব্যবহার করুন:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.spinner_item,list);

আপনার ড্রপ ডাউন সংস্থান সেট করার দরকার নেই। spinner_item.xmlআপনার আইটেমগুলিকে স্পিনারে দেখানোর জন্য এটি লাগবে ।


2
@ হিরাল পাঠ্যটি কেবলমাত্র বর্তমান নির্বাচিত আইটেমটির জন্য সাদা হবে।
টেসলা

8
@ সন্তোষ ভাল আপনি টেক্সটভিউতে আইডি যুক্ত করতে হবে, কেবল সেখানে যুক্ত করুন android:id="@+id/customSpinnerItemTextView"। আপনি যদি এটি ডিবাগ করে থাকেন তবে আপনি এটি জানতেন।
vilpe89

3
@ vilpe89 আপনি কী বোঝাতে চেয়েছেন আপনি কি উপরের কোডটি সংশোধন করতে পারবেন? এই অ্যান্ড্রয়েড: আইডি কোথায় যায়? স্পিনার ট্যাগে অবশ্যই নেই, কারণ এটির নিজস্ব আইডি রয়েছে। তবে আপনি এটি উপরে তৈরি টেক্সটভিউ ট্যাগটিতে যুক্ত করার অর্থ নেই। আমি কীভাবে রেফারেন্স করব যে আমি এক্সএমএল থেকে সরাসরি এই ট্যাগটি ব্যবহার করতে চাই? এছাড়াও, Eclipse থেকে XML তৈরি করার সময়, আমি কেবলমাত্র একটি টেক্সটভিউ সম্বলিত একটি এক্সএমএল ফাইল তৈরি করার কোনও বিকল্প দেখতে পাচ্ছি না, কীভাবে এটি কাজ করে ???
মাইকেল

29
শুধু একটি ছোট নোট। টেক্সটসাইজে ডিপি / ডিপ
ইয়র্মারডেনজেন

18
এটি কেবল স্টাইল ব্যবহার করে করা যায় না? আমি আশ্চর্য হয়েছি কিভাবে ছোট
স্টাফগুলি

183

সহজ এবং খাস্তা ...:

private OnItemSelectedListener OnCatSpinnerCL = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {

       ((TextView) parent.getChildAt(0)).setTextColor(Color.BLUE);
       ((TextView) parent.getChildAt(0)).setTextSize(5);

    }

    public void onNothingSelected(AdapterView<?> parent) {

    }
};

19
এটি আমার পক্ষে সেরা সমাধান, কারণ আমার স্পিনারের লেখার রঙ পরিবর্তন করা দরকার, তবে উপস্থিত তালিকায় নেই। ধন্যবাদ.
পিটার.বার্তোস

7
আমার জন্য, আইটেমটির রঙ জ্বলজ্বল করে, মূল রঙ থেকে আমি বেছে নেওয়া রঙের দিকে যেতে
ফিলিপ কনডে

@ ফিলিপকোন্ডী আপনি কি কখনও উত্তর খুঁজে পেয়েছেন? আমারও একই প্রশ্ন. আমার প্রশ্নটি এখানে: স্ট্যাকওভারফ্লো
রক লি

@ ফিলিপেন্ডি আপনার জন্য, প্রথমে এটি আরোহণের রঙ নেয়, তারপরে আপনি নিজেই অন্য রঙে পরিবর্তিত হন, তাই এটি খুব ক্লান্ত দেখাচ্ছে। প্রথমে এটি গ্রহণ করে <আইটেমের নাম = "colorAccent"> @ রঙ / রঙ_প্রাইমারি </item> তারপরে আপনি নিজেই প্রোগ্রাম্যাটিক দ্বারা পরিবর্তিত হয়েছিলেন, সুতরাং আপনি ঝলক অনুভব করেন
আশরাফ

2
এটি আমার পক্ষে কাজ করেছে তবে আমার সমস্যাটি হ'ল যখন আমি কোনও টুকরো অ্যাপ্লিকেশন ক্র্যাশ হয়ে ফিরে আসি কারণ এটি উপরের
অক্ষয় শাহ

145

যদি সমস্ত স্পিনারের টেক্সটভিউ আইটেমগুলির জন্য একই পাঠ্য রঙ থাকতে পারে, তবে আরেকটি উপায় হল স্পিনার ড্রপডাউন আইটেমগুলির জন্য একটি কাস্টম স্টাইল ব্যবহার করা:

ইন res/values/styles.xml:

<resources>
    <style name="AppBaseTheme" parent="android:Theme.Light">
    </style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
    </style>

    <style name="mySpinnerItemStyle" parent="@android:style/Widget.Holo.DropDownItem.Spinner">
        <item name="android:textColor">@color/my_spinner_text_color</item>
    </style>
</resources>

এবং আপনার পছন্দসই রঙটি রেজ / মান / রং.এক্সএমএল এ সংজ্ঞায়িত করুন:

<color name="my_spinner_text_color">#808080</color>

2
এবং এই অ্যাপ্লিকেশনটি অ্যাপ্লিকেশন থিমটিতে কীভাবে প্রয়োগ করবেন? আমি এটি প্যারেন্ট থিম "@ স্টাইল / উইজেট.অ্যাপকম্প্যাট.ড্রপডাউন আইটেম.স্পিনার" ওভাররাইড করে এটিকে ছুঁড়েছি এবং এটি কার্যকর হয়নি
গাইরো

11
আমি আরও যুক্ত করব: <আইটেমের নাম = "অ্যান্ড্রয়েড: স্পিনার আইটেম স্টাইল"> @ শৈলী / মাইস্পাইনার আইটেম স্টাইল </item> এটি নিশ্চিত করে যে ধসে পড়া পাঠ্যের একই রঙ রয়েছে - যদি এটি পছন্দসই আচরণ হয়।
অসীম লুপ

4
আমার জন্যও কাজ করে না, স্টাইলটি সম্পূর্ণ উপেক্ষা করা হয়েছে
diogo.abdalla

1
@ হোয়াই দয়া করে আপনার উত্তরটি সম্পাদন করুন অসীম লুপের পরামর্শ অনুসারে এটি আমার পক্ষে নিখুঁতভাবে কাজ করেছে
চিন্তন দেশাই

4
AppCompat থিমের জন্য শুধু অপসারণ android:ভালো<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D

73

এখানে একটি লিঙ্ক দেওয়া হয়েছে যা আপনাকে স্পিনারের রঙ পরিবর্তন করতে সহায়তা করতে পারে :

এখানে ক্লিক করুন

<Spinner
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:id="@+id/spinner"
    android:textSize="20sp"
    android:entries="@array/planets"/>

স্পিনার আইটেম স্পিনার_সাইটম.এক্সএমএল এর জন্য কাস্টম সংজ্ঞা সহ আপনার নিজের লেআউট ফাইল তৈরি করতে হবে :

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:textColor="#ff0000" />

আপনি যদি ড্রপডাউন তালিকার আইটেমগুলি কাস্টমাইজ করতে চান তবে আপনাকে একটি নতুন লেআউট ফাইল তৈরি করতে হবে। স্পিনার_ড্রপডাউন_াইটেম.এক্সএমএল :

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    style="?android:attr/spinnerDropDownItemStyle"
    android:maxLines="1"
    android:layout_width="match_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:ellipsize="marquee"
    android:textColor="#aa66cc"/>

এবং পরিশেষে স্পিনার ঘোষণায় আরও একটি পরিবর্তন:

ArrayAdapter adapter = ArrayAdapter.createFromResource(this,
R.array.planets_array, R.layout.spinner_item);

adapter.setDropDownViewResource(R.layout.spinner_dropdown_item);
spinner.setAdapter(adapter);

এটাই.


2
এটি একটি স্বয়ংক্রিয় প্রতিক্রিয়া যা নতুন ব্যবহারকারীদের পোস্ট পর্যালোচনা থেকে এসেছে। আপনি উত্তর সম্পাদনা করেছেন তা দেখে খুশি! :)
মার্কো

1
দেখে মনে হচ্ছে, android:textSize="20sp"প্রথম কোডটিতে স্নিপেট অকেজো: নিয়ন্ত্রণের টেক্সটাইজটি সংজ্ঞায়িত করা হয়েছেspinner_item.xml
ডেনিসিজএল

23

আপনি যদি android.support.v7.widget.appCompatSpinner এর সাথে কাজ করেন তবে স্টাইলগুলি ব্যবহার করে এটি সবচেয়ে সহজ পরীক্ষিত সমাধান:

 <android.support.v7.widget.AppCompatSpinner
                    android:id="@+id/spefcialFx"
                    style="@style/Widget.AppCompat.Spinner.Underlined"
                    android:layout_width="200dp"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="4dp"
                    android:theme="@style/Spinner"
                    android:entries="@array/special_fx_arrays"
                    android:textSize="@dimen/text_size_normal"></android.support.v7.widget.AppCompatSpinner>

এবং শৈলী:

<style name="Spinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner">
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
        <item name="android:textColor">@color/white</item>
        <item name="android:backgroundTint">@color/red</item>
        <item name="android:textSize">14sp</item>
    </style>

একমাত্র ডাউনসাইডটি হ'ল অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড টিন্ট ড্রপডাউন তীর এবং ড্রপডাউন ব্যাকগ্রাউন্ড উভয়ের জন্য রঙ সেট করে।


3
আপনি ব্যবহার করেন style="@style/Widget.AppCompat.Spinner.Underlined"তবে আপনার কেবল style name="Spinner"...
ব্যবহারকারীর 25

1
paddingStartএপিআই 17 backgroundTintপ্রয়োজন , 21 এপিআই প্রয়োজন requires
কুলমাইন্ড

18

পিছিয়ে যাওয়া রোধ করতে, আপনাকে কেবল onItemSelectedশ্রোতার মধ্যেই পাঠ্য বৈশিষ্ট্যগুলি স্থির করতে হবে না , তবে কার্যকলাপের onCreateপদ্ধতিতেও (তবে এটি কিছুটা জটিল)।

বিশেষত, onCreateঅ্যাডাপ্টার সেট করার পরে আপনার এটি লাগাতে হবে :

spinner.setSelection(0, true);
View v = spinner.getSelectedView();
((TextView)v).setTextColor(backgroundColor);

এবং তারপরে এটি রাখুন onItemSelected:

((TextView) view).setTextColor(backgroundColor);

এখানে একটি সম্পূর্ণ উদাহরণ:

@Override  
protected void onCreate(Bundle savedInstanceState)
{  
    Spinner spinner = (Spinner) findViewById(R.id.spinner); 

    //Set the choices on the spinner by setting the adapter.  
    spinner.setAdapter(new SpinnerAdapter(toolbar.getContext(), new String[]{"Overview", "Story", "Specifications", "Poll", "Video"}, accentColor, backgroundColor));

    //Set the text color of the Spinner's selected view (not a drop down list view) 
    spinner.setSelection(0, true);
    View v = spinner.getSelectedView();
    ((TextView)v).setTextColor(backgroundColor);

    //Set the listener for when each option is clicked.  
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {  

        @Override  
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
        {  
           //Change the selected item's text color  
           ((TextView) view).setTextColor(backgroundColor);
        }  

        @Override  
        public void onNothingSelected(AdapterView<?> parent)
        {  
        }  
    });  

}  

আরও তথ্যের জন্য, আমার প্রশ্ন দেখুন


15

আপনি যদি কেবলমাত্র নির্বাচিত আইটেমটিতে পাঠ্যের রঙ পরিবর্তন করতে চান তবে এটি একটি সম্ভাব্য কাজ হতে পারে। এটি আমার পক্ষে কাজ করেছে এবং আপনার পক্ষেও কাজ করা উচিত।

spinner.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                ((TextView) spinner.getSelectedView()).setTextColor(Color.WHITE);
            }
        });

6

কারো জন্য যার কেবলমাত্র Styleপথ প্রয়োজন AppCompat

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

styles.xml

<resources>
    ... 
    <style name="Spinner" parent="Widget.AppCompat.Light.DropDownItem.Spinner">
        <item name="android:paddingStart">0dp</item>
        <item name="android:paddingEnd">0dp</item>
        <item name="android:textColor">@color/material_grey_700</item>
        <item name="android:textSize">12sp</item>
    </style>
</resources>

your_spinner_layout.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
    ...

    <android.support.v7.widget.AppCompatSpinner
        android:id="@+id/content_spinner"
        style="@style/Widget.AppCompat.Spinner.Underlined"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:entries="@array/shipping_tracking_carrier_names"
        android:spinnerMode="dropdown"
        android:theme="@style/Spinner" />

    <EditText
        android:id="@+id/content_input"
        android:layout_width="140dp"
        android:layout_height="wrap_content"
        android:inputType="text"
        android:maxLines="1"
        android:paddingEnd="8dp"
        android:paddingStart="8dp"
        android:textColor="@color/material_grey_700"
        android:textSize="12sp" />

    ...
</LinearLayout>    

প্লাস
এবং আপনি যদি android:entriesসংজ্ঞায়িত শৈলীর সাথে প্রোগ্রামগতভাবে সেট করতে চান ।
এটা চেষ্টা কর.

AppCompatSpinner spinner = findViewById(R.id.content_spinner);
CharSequence[] entries = getResources().getTextArray(R.array.shipping_tracking_carrier_names);
ArrayAdapter<CharSequence> adapter = new ArrayAdapter<>(spinner.getContext(), android.R.layout.simple_spinner_item, entries);
adapter.setDropDownViewResource(android.support.v7.appcompat.R.layout.support_simple_spinner_dropdown_item);
spinner.setAdapter(adapter);

কোড হিসাবে, এর Contextসাথে একই ব্যবহার Spinnerকরা সবচেয়ে গুরুত্বপূর্ণ বিষয়।

spinner.getContext()

5

স্পিনার পাঠ্যের রঙ পরিবর্তন করতে:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}

এটি সবচেয়ে সহজ এবং এটি আমার জন্য কাজ করেছে, ধন্যবাদ!
মৌসা আলফাইলি

আমি এই সমাধানটিও পছন্দ করি। এটা সহজ এবং ভাল কাজ করে।
করচিক্স

4

একটি ছোট আকার পেতে কাস্টম লেআউট তৈরি করা এবং আপনি যদি স্পিনারের জন্য অ্যান্ড্রয়েডের অভ্যন্তরীণ ছোট আকারের লেআউট ব্যবহার করতে চান তবে আপনার ব্যবহার করা উচিত:

"android.R.layout.simple_gallery_item" এর পরিবর্তে "android.R.layout.simple_spinner_item"।

ArrayAdapter<CharSequence> madaptor = ArrayAdapter
            .createFromResource(rootView.getContext(),
                                R.array.String_visitor,
                                android.R.layout.simple_gallery_item);

এটি স্পিনার লেআউটের আকার হ্রাস করতে পারে। এটি কেবল একটি সহজ কৌশল।

আপনি যদি ড্রপ ডাউন তালিকার আকার হ্রাস করতে চান তবে এটি ব্যবহার করুন:

madaptor.setDropDownViewResource(android.R.layout.simple_gallery_item);

4

অ্যান্ড্রয়েড.আর.আলআউটআউট সংস্থানগুলি পুনরায় ব্যবহার / পরিবর্তন করার সহজ উপায়টি কেবল সংজ্ঞা the অ্যান্ড্রয়েড স্টুডিওতে, android.R.layout.simple_spinner_item.xML এ Ctrl+ Bকরুন।

এটি আপনাকে রিসোর্স ফাইলে নিয়ে যাবে। রিসোর্স ফাইলটি অনুলিপি করুন এবং আপনার প্যাকেজ.আর.আলআউট ফোল্ডারে একটি নতুন লেআউট যুক্ত করুন এবং আপনার পছন্দ মতো পাঠ্যদর্শনের পাঠ্য রঙটি পরিবর্তন করুন এবং তারপরে এটিকে অ্যাডাপ্টারে কেবল কল করুন:

ArrayAdapter<String> adapter = new ArrayAdapter<String(Context,R.layout.spinner_item, spinnerlist);

4

যারা DrowDownIconরঙ পরিবর্তন করতে চান তাদের জন্য আপনি এটি ব্যবহার করতে পারেন

spinner.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_ATOP);

আপনি চেষ্টা করতে পারেন<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
আমান সিংহ

আপনার স্টাইলে এই লাইনটি রাখুনAppTheme
আমান সিং

এটি কোডটি কাজ করেছিলDrawable spinnerDrawable = spinner.getBackground().getConstantState().newDrawable(); spinnerDrawable.setColorFilter(getResources().getColor(R.color.md_white_1000), PorterDuff.Mode.SRC_ATOP); if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { spinner.setBackground(spinnerDrawable); }else{ spinner.setBackgroundDrawable(spinnerDrawable); }
এডিজি ক্রুসার

4

নীচে getView পদ্ধতিটি ওভাররাইড করে পাঠ্যের রঙ পরিবর্তন করতে পারে:

 new ArrayAdapter<String>(getContext(), android.R.layout.simple_spinner_dropdown_item, list()){
                @Override
                public View getView(int position, View convertView, @NonNull ViewGroup parent) {
                    View view = super.getView(position, convertView, parent);
                    //change the color to which ever you want                    
                    ((CheckedTextView) view).setTextColor(Color.RED);
                    //change the size to which ever you want                    
                    ((CheckedTextView) view).setTextSize(5);
                    //for using sp values use setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
                    return view;
                }
    }

3

সিম্পল: আমার পক্ষে কাজ করে

TextView spinnerText = (TextView) spinner.getChildAt(0);

spinnerText.setTextColor(Color.RED);

1
স্পিনার.জেটচিল্ডএট (0) আমাকে শূন্য
ফেরায়

2
আমি মনে করি এই কৌশলটি API 19+ এর জন্য।
হোসে ম্যানুয়েল অ্যাবারকা রদ্রিগেজ

2
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/spinnerItemStyle"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="#fff"
    android:ellipsize="marquee"
    android:textAlignment="inherit"/>

শুধু এটি ব্যবহার করুন:

ArrayAdapter<String> adapter_category = new ArrayAdapter<String>(this,
    R.layout.spinner_list_item, categories);
adapter_category
    .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

1

আশরাফের সমাধানের আরও একটি ভিন্নতা হ'ল আপনি অ্যাকাউন্টের পর্দার আকার গ্রহণ করছেন তা নিশ্চিত করা। আপনাকে অ্যাডাপ্টার সেট করার পরে আপনাকে স্পিনারকে অনক্রিট করতে এবং শ্রোতা সেট করতে হবে:

//set your adapter with default or custom spinner cell, then://
serverSpinner.setOnItemSelectedListener(spinnerSelector);
serverSpinner.setSelection(defaultServer);

তারপরে আপনি স্পিনারকে ক্লিক করার আগে যে ভিউটি দেখানো হচ্ছে সেটি পরিবর্তন করা শুরু করতে পারেন:

private AdapterView.OnItemSelectedListener spinnerSelector = new AdapterView.OnItemSelectedListener() {
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        boolean tabletSize = getResources().getBoolean(R.bool.isTablet);
        boolean largeTablet = getResources().getBoolean(R.bool.isLargeTablet);
        if (tabletSize) { ((TextView)parent.getChildAt(0)).setTextSize(16); }
        else if (largeTablet) { ((TextView)parent.getChildAt(0)).setTextSize(18); }
        else { ((TextView)parent.getChildAt(0)).setTextSize(12); }
    }
    public void onNothingSelected(AdapterView<?> parent) {

    }
};

আপনাকে যা করতে হবে তা হ'ল লেআউটের নির্দিষ্ট ফোল্ডারগুলি তৈরি করা:

মান-sw360dp

মান-sw600dp

মান-sw800dp

তারপরে সেই প্রতিটি ফোল্ডারে "bool.xML" নামের একটি এক্সএমএল ফাইল যুক্ত করুন:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="isTablet">false</bool>
    <bool name="isLargeTablet">false</bool>
</resources>

1

প্রথমে আমাদের নীচের মত সহজ xmlরিসোর্স ফাইল তৈরি করতে হবে textview:

<?xml version="1.0" encoding="utf-8"?>

 <TextView  
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"
    android:textSize="20sp"
    android:gravity="left"  
    android:textColor="#FF0000"         
    android:padding="5dip"
    />   

এবং এটি সংরক্ষণ করুন। আপনার অ্যাডাপ্টারলিস্টে সেট করার পরে।


1

আপনার কাছে স্পিনার জন্য এই ধরণের অ্যাডাপ্টার থাকতে পারে, সম্পূর্ণ কাস্টমাইজড:

 ArrayAdapter<String> genderAdapter = new ArrayAdapter<String>(getActivity(), R.layout.spinner_text, genderList) {

        public View getView(int position, View convertView, ViewGroup parent) {
            View v = super.getView(position, convertView, parent);
            ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            ((TextView) v).setTextColor(Color.parseColor("#676767"));
            ((TextView) v).setTypeface(vrFont);
            return v;
        }

        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            View v = super.getDropDownView(position, convertView, parent);
            ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
            ((TextView) v).setTypeface(vrFont);
            ((TextView) v).setTextColor(Color.parseColor("#676767"));

            if (position == 0) {
                ((TextView) v).setTextColor(Color.parseColor("#979797"));
            }

            return v;
        }

R.layout.spinner_text এর সময়:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
style="?android:attr/spinnerItemStyle"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:gravity="center_vertical|left"
android:ellipsize="marquee"
android:maxLines="1"
android:textColor="@color/whiteThree" />

1

যদি আপনি একটি সহজ পদ্ধতি চান তবে কোনও ড্রপডাউনতে আইটেম যুক্ত করতে, আপনি সাধারণত সেগুলি স্ট্রিং.এক্সএমএলে যুক্ত করেন। স্ট্রিংস.এমএমএল ফাইলটি ব্যবহার করে কীভাবে রঙ যুক্ত করা যায় তার একটি উদাহরণ এখানে:

বয়স রেঞ্জ নির্বাচন করুন

<string-array name="age_array">

   <item> 0-6 </item>                               //No custom colour

  <item><font fgcolor='#FF4CD964'> 12+ </font></item> //With custom colour

</string-array>

চমত্কার কৌশল ... এক অফ
স্পিনারটির

0

আমি নিম্নলিখিত হিসাবে এটি করেছি I আমার কাছে getDropDownView () এবং getView () পদ্ধতি ব্যবহার করা হয়েছে।

getDropDownView()খোলা স্পিনার জন্য ব্যবহার করুন ।

@Override
public View getDropDownView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null) {
    LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.context_row_icon, null);
  }
  TextView mTitle = (TextView) view.findViewById(R.id.context_label);
  ImageView flag = (ImageView) view.findViewById(R.id.context_icon);                

  mTitle.setText(values[position].getLabel(activity));

  if (!((LabelItem) getItem(position)).isEnabled()) {
    mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));
  } else {
    mTitle.setTextColor(activity.getResources().getColor(R.color.context_item));
  }
  return view;
}

এবং getView()বন্ধ স্পিনার জন্য ব্যবহার করুন ।

@Override
public View getView(int position, View convertView, ViewGroup parent) {
  View view = convertView;
  if (view == null) {
    LayoutInflater vi = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    view = vi.inflate(R.layout.context_row_icon, null);
  }
  TextView mTitle = (TextView) view.findViewById(R.id.context_label);
  ImageView flag = (ImageView) view.findViewById(R.id.context_icon);

  mTitle.setText(values[position].getLabel(activity));
  mTitle.setTextColor(activity.getResources().getColor(R.color.context_item_disabled));

  return view;
}

এটি কোডটি সঠিকভাবে পরীক্ষা করা হয়েছে এবং অ্যাপস্টোরে অ্যাপ্লিকেশনটিতে কাজ করেছে
ভাবীকুমার প্যাটেল

0

এই পদ্ধতিটি ব্যবহার করে দেখুন। এটা আমার জন্য কাজ করছে।

@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
    TextView textView = (TextView) view;
    ((TextView) adapterView.getChildAt(0)).setTextColor(Color.RED);
    ((TextView) adapterView.getChildAt(0)).setTextSize(20);
    Toast.makeText(this, textView.getText()+" Selected", Toast.LENGTH_SHORT).show();
}

0

ঠিক এর মতো নতুন স্টাইল যুক্ত করুন:

<style name="mySpinnerItemStyle" parent="ThemeOverlay.AppCompat.Dark">
    <item name="android:textColor">#000</item>
    <item name="android:color">#000</item>
</style>

এবং এটি ব্যবহার করুন:

<Spinner
      android:id="@+id/spinnerCategories"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      style="@style/mySpinnerItemStyle"
      android:layout_margin="5dp" />

0
    String typeroutes[] = {"Select","Direct","Non Stop"};
    Spinner typeroute;

    typeroute = view.findViewById(R.id.typeroute);

    final ArrayAdapter<String> arrayAdapter5 = new ArrayAdapter<String>(
                getActivity(), android.R.layout.simple_spinner_item, typeroutes) {
            @Override
            public boolean isEnabled(int position) {
                if (position == 0) {
                    // Disable the first item from Spinner
                    // First item will be use for hint
                    return false;
                } else {
                    return true;
                }
            }

            public View getView(int position, View convertView, ViewGroup parent) {
                View v = super.getView(position, convertView, parent);
                ((TextView) v).setTextSize(TypedValue.COMPLEX_UNIT_DIP, 16);
                ((TextView) v).setTextColor(Color.parseColor("#ffffff"));
                return v;
            }         ---->in this line very important so add this

            @Override
            public View getDropDownView(int position, View convertView,
                                        ViewGroup parent) {
                View view = super.getDropDownView(position, convertView, parent);
                TextView tv = (TextView) view;
                if (position == 0) {
                    // Set the hint text color gray
                    tv.setTextColor(Color.GRAY);
                } else {
                    tv.setTextColor(Color.BLACK);
                }
                return view;
            }
        };

        arrayAdapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        typeroute.setAdapter(arrayAdapter5);

এগুলিই আপনার কোডিং উপভোগ করুন ...

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