Bagaimana cara mengubah ukuran teks dan warna teks pemintal?

432

Dalam aplikasi Android saya, saya menggunakan spinner, dan saya telah memuat data dari database SQLite ke spinner, dan itu berfungsi dengan baik. Ini kode untuk itu.

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);

Sekarang saya ingin mengubah warna teks dan ukuran teks dari data pemintal. Saya telah menggunakan baris XML berikut ke tag pemintal saya pada file XML saya, tetapi tidak berfungsi.

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

Bagaimana saya bisa mengubah warna teks dan ukuran teks dari pemintal saya?

Dinesh Anuruddha
sumber
periksa situs-situs berikut [StackoverFlow] [1] [stackoverflow] [2] [stackoverflow] [3] Saya pikir ini adalah pertanyaan rangkap [1]: stackoverflow.com/questions/4880413/… [2]: stackoverflow.com/questions / 4989817 / ... [3]: stackoverflow.com/questions/5836254/…
user1203673
1
Untuk textSize yang benar adalah dengan menggunakan SP ... android: textSize = "11sp"
Diego Venâncio

Jawaban:

780

Buat file XML khusus untuk item pemintal Anda.

spinner_item.xml:

Berikan warna dan ukuran khusus Anda ke teks di file ini.

<?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"
    />

Sekarang gunakan file ini untuk menampilkan item pemintal Anda seperti:

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

Anda tidak perlu mengatur sumber drop-down. Hanya perlu spinner_item.xmlmenampilkan item Anda di pemintal.

Hiral Vadodaria
sumber
2
@Hiral text akan berwarna putih hanya untuk item yang dipilih saat ini.
tesla
8
@ SANTHOSH baik Anda harus menambahkan id ke TextView, cukup tambahkan di sana android:id="@+id/customSpinnerItemTextView". Jika Anda telah men-debug ini, Anda akan tahu ini.
vilpe89
3
@ vilpe89 dapatkah Anda memodifikasi kode di atas untuk menunjukkan apa yang Anda maksud dengan ini? kemana android ini: id pergi? tentu saja tidak di tag pemintal, karena memiliki id itu sendiri. tetapi tidak masuk akal untuk menambahkannya di tag tampilan teks yang telah Anda buat di atas. bagaimana saya merujuk bahwa saya ingin menggunakan tag ini langsung dari XML? juga, ketika membuat XML dari Eclipse, saya tidak melihat opsi untuk membuat file XML yang hanya berisi TextView, bagaimana cara kerjanya ???
Michael
29
Hanya sedikit catatan. Ukuran teks harus menggunakan sp sebagai ganti dp / dip
ymerdrengene
18
tidak bisakah ini dilakukan dengan menggunakan gaya saja? Saya terkejut betapa hal-hal kecil sangat sulit untuk bergaya di android .. ini membuat frustasi .. Saya berharap mereka memiliki sistem styling seperti css
yeahman
183

Sederhana dan segar ...:

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) {

    }
};
Ashraf
sumber
19
Ini adalah solusi terbaik bagi saya, karena saya perlu mengubah warna teks pada pemintal, tetapi tidak dalam daftar yang muncul. Terima kasih.
peter.bartos
7
Bagi saya, warna barang berkedip, beralih dari warna asli ke warna yang saya pilih
Felipe Conde
@FelipeConde Apakah Anda pernah menemukan jawaban? Saya punya pertanyaan yang sama. Pertanyaan saya ada di sini: stackoverflow.com/questions/33908564/…
Rock Lee
@FelipieConde Untuk Anda, dibutuhkan warna pendakian pada awalnya, kemudian Anda ubah ke warna lain secara manual, sehingga terlihat sangat lelah. Saat Pertama Dibutuhkan <item name = "colorAccent"> @ color / color_primary </item> Kemudian Anda secara manual diubah oleh program, Jadi Anda merasakan kedipan itu
Ashraf
2
ini bekerja untuk saya tetapi masalah saya adalah ketika saya kembali dari aplikasi fragmen crash karena mendapat null pointer pada kode di atas
Akshay Shah
145

Jika semua pemintal mungkin memiliki warna teks yang sama untuk item TextView mereka, pendekatan lain adalah menggunakan gaya khusus untuk item tarik-turun pemintal:

Dalam 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>

Dan tentukan warna khusus Anda dalam res / values ​​/ colors.xml:

<color name="my_spinner_text_color">#808080</color>
Whypee
sumber
2
Dan bagaimana cara menerapkan solusi ini ke tema Appcompt? Saya mencobanya dengan mengganti tema induk "@ style / Widget.AppCompat.DropDownItem.Spinner" dan itu tidak berhasil
GyRo
11
Saya akan menambahkan juga menambahkan: <item name = "android: spinnerItemStyle"> @ style / mySpinnerItemStyle </item> Ini memastikan bahwa teks yang diciutkan memiliki warna yang sama - jika ini adalah perilaku yang diinginkan.
infinite-loop
4
tidak bekerja untuk saya juga, gaya ini benar-benar diabaikan
diogo.abdalla 9'15
1
@ Whypee tolong edit jawaban Anda sesuai dengan saran dari infinite-loop itu bekerja dengan baik untuk saya
Chintan Desai
4
Untuk tema AppCompat hapus saja android:seperti ini<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D
73

Berikut ini tautan yang dapat membantu Anda mengubah warna Spinner :

Klik disini

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

Anda perlu membuat file tata letak Anda sendiri dengan definisi khusus untuk item spinner spinner_item.xml :

<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" />

Jika Anda ingin menyesuaikan item daftar dropdown, Anda perlu membuat file layout baru. spinner_dropdown_item.xml :

<?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"/>

Dan akhirnya perubahan lain dalam deklarasi pemintal:

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

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

Itu dia.

Niib Fouda
sumber
2
Ini adalah respons otomatis yang berasal dari meninjau posting oleh pengguna baru. Senang melihat bahwa Anda mengedit jawabannya! :)
Marko
1
Tampaknya, bahwa android:textSize="20sp"dalam cuplikan kode pertama tidak berguna: ukuran teks dari kontrol didefinisikan dalamspinner_item.xml
DenisGL
23

Jika Anda bekerja dengan android.support.v7.widget.AppCompatSpinner di sini adalah solusi teruji menggunakan gaya:

 <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>

Dan gayanya:

<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>

Satu-satunya downside adalah android: backgroundTint menetapkan warna untuk panah dropdown dan latar belakang dropdown.

voytez
sumber
3
Anda menggunakan style="@style/Widget.AppCompat.Spinner.Underlined"tetapi Anda hanya memiliki style name="Spinner"...
user25
1
paddingStartmembutuhkan API 17, backgroundTintmembutuhkan API 21.
CoolMind
18

Untuk mencegah lagging, Anda tidak hanya perlu mengatur properti teks di onItemSelectedlistener, tetapi juga dalam metode Activity onCreate(tapi agak rumit).

Khususnya, Anda perlu memasukkan ini onCreatesetelah mengatur adaptor:

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

Dan kemudian taruh ini di onItemSelected:

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

Ini adalah contoh lengkapnya:

@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)
        {  
        }  
    });  

}  

Untuk detail lebih lanjut, lihat pertanyaan saya .

Rock Lee
sumber
15

Jika Anda ingin warna teks berubah di item yang dipilih saja, maka ini bisa menjadi solusi yang mungkin. Itu bekerja untuk saya dan harus bekerja untuk Anda juga.

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

Untuk seseorang yang hanya membutuhkan Stylejalan AppCompat.

Hasil
masukkan deskripsi gambar di sini masukkan deskripsi gambar di sini

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>    

Plus
Dan jika Anda ingin mengatur secara android:entriespemrograman dengan gaya yang ditentukan.
Coba ini.

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);

Seperti dalam kode, menggunakan sama Contextdengan hal Spinneryang paling penting.

spinner.getContext()
wonsuc
sumber
5

Untuk mengubah warna teks pemintal:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}
Hanisha
sumber
Ini adalah yang paling sederhana dan berhasil untuk saya, terima kasih!
Mousa Alfhaily
Saya suka solusi ini juga. itu sederhana dan bekerja dengan baik.
korchix
4

Daripada membuat tata letak khusus untuk mendapatkan ukuran kecil dan jika Anda ingin menggunakan LAYOUT ukuran kecil internal Android untuk pemintal, Anda harus menggunakan:

"android.R.layout.simple_gallery_item" bukan "android.R.layout.simple_spinner_item".

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

Ini dapat mengurangi ukuran tata letak pemintal. Ini hanya trik sederhana.

Jika Anda ingin mengurangi ukuran daftar drop-down gunakan ini:

madaptor.setDropDownViewResource(android.R.layout.simple_gallery_item);
Hemant Shori
sumber
4

Cara termudah untuk menggunakan kembali / mengubah sumber daya android.R.layout cukup dengan definisinya. Di Android Studio, lakukan Ctrl+ Bdi android.R.layout.simple_spinner_item.xml.

Ini akan membawa Anda ke file sumber. Cukup salin file sumber daya dan tambahkan tata letak baru di folder Package.R.layout Anda dan ubah textColor of textview sesuka Anda dan kemudian panggil saja dalam adaptor seperti ini:

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

Bagi yang ingin berganti DrowDownIconwarna bisa Anda gunakan seperti ini

spinner.getBackground().setColorFilter(Color.parseColor("#ffffff"), PorterDuff.Mode.SRC_ATOP);
AMAN SINGH
sumber
dapatkah Anda mencoba<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AMAN SINGH
letakkan garis ini dalam gaya AndaAppTheme
AMAN SINGH
Ini adalah kode yang berfungsiDrawable 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); }
Edijae Crusar
4

Dapat mengubah warna teks dengan mengganti metode getView sebagai berikut:

 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;
                }
    }
Madhur
sumber
3

Sederhana: Bekerja untuk saya

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

spinnerText.setTextColor(Color.RED);
Waqar Ahmed Shujrah
sumber
1
spinner.getChildAt (0) mengembalikan nol kepada saya: /
Karl Heinz Brehme Arredondo
2
Saya pikir teknik ini untuk API 19+.
Jose Manuel Abarca Rodríguez
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"/>

gunakan saja ini:

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

Variasi lain dari solusi Ashraf adalah memastikan Anda mempertimbangkan ukuran layar akun. Anda harus memasukkan pemintal di onCreate dan mengatur pendengar setelah Anda mengatur adaptor:

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

Kemudian Anda dapat mulai mengubah ukuran teks tampilan yang ditampilkan sebelum pemintal diklik:

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) {

    }
};

Yang perlu Anda lakukan adalah membuat folder khusus tata letak seperti ini:

nilai-sw360dp

nilai-sw600dp

nilai-sw800dp

lalu tambahkan file xml bernama "bool.xml" ke masing-masing folder tersebut:

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

Pertama-tama kita harus membuat xmlfile sumber daya sederhana textviewseperti di bawah ini:

<?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"
    />   

dan simpan itu. setelah ditetapkan pada daftar adaptor Anda.

Ishor Neupane
sumber
1

Anda dapat memiliki jenis adaptor ini untuk pemintal, sepenuhnya disesuaikan:

 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;
        }

sedangkan R.layout.spinner_text adalah:

<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" />
Elang Hitam
sumber
1

Jika Anda ingin metode sederhana, untuk menambahkan item ke dropdown, Anda biasanya menambahkannya ke strings.xml. Berikut adalah contoh tentang cara menambahkan warna dengan menggunakan file strings.xml:

RANGE AGE SELECT

<string-array name="age_array">

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

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

</string-array>
Jamie
sumber
trik lucu ... berguna dan cepat untuk pemintal satu kali, warna harus menjadi string nilai warna mentah bukan dari xml
me_
0

Saya telah melakukan ini sebagai berikut. Saya telah menggunakan metode getDropDownView () dan getView ().

Gunakan getDropDownView()untuk Spinner yang dibuka.

@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;
}

Dan Gunakan getView()untuk Spinner tertutup.

@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;
}
Bhavinkumar Patel
sumber
Ini adalah kode yang diuji dengan benar dan bekerja dalam aplikasi di appstore
Bhavinkumar Patel
0

Coba metode ini. Ini bekerja untuk saya.

@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();
}
Tushar Lathiya
sumber
0

tambahkan saja gaya baru seperti ini:

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

dan gunakan:

<Spinner
      android:id="@+id/spinnerCategories"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      style="@style/mySpinnerItemStyle"
      android:layout_margin="5dp" />
Elyas Nategh
sumber
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);

itu saja semua menikmati coding Anda ...

mahendren
sumber