Làm thế nào để thay đổi kích thước văn bản spinner và màu văn bản?


432

Trong ứng dụng Android của tôi, tôi đang sử dụng công cụ quay vòng và tôi đã tải dữ liệu từ cơ sở dữ liệu SQLite vào công cụ quay vòng và nó hoạt động bình thường. Đây là mã cho điều đó.

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

Bây giờ tôi muốn thay đổi màu văn bản và kích thước văn bản của dữ liệu spinner. Tôi đã sử dụng các dòng XML sau cho thẻ spinner của mình trên tệp XML của mình, nhưng nó không hoạt động.

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

Làm cách nào tôi có thể thay đổi màu văn bản và kích thước văn bản của spinner?


kiểm tra các trang web sau [StackoverFlow] [1] [stackoverflow] [2] [stackoverflow] [3] Tôi nghĩ đây là câu hỏi trùng lặp [1]: stackoverflow.com/questions/4880413/ trộm [2]: stackoverflow.com/questions / 4989817 / Lỗi [3]: stackoverflow.com/questions/5836254/
trộm

hãy thử bài đăng này stackoverflow.com/questions/6159113/ khăn
Ajay

1
Đối với textSize, chính xác là sử dụng SP ... android: textSize = "11sp"
Diego Venâncio

Câu trả lời:


780

Tạo một tệp XML tùy chỉnh cho mục spinner của bạn.

spinner_item.xml:

Cung cấp màu sắc và kích thước tùy chỉnh của bạn cho văn bản trong tập tin này.

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

Bây giờ sử dụng tệp này để hiển thị các mục spinner của bạn như:

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

Bạn không cần thiết lập tài nguyên thả xuống. Nó sẽ spinner_item.xmlchỉ mất để hiển thị các mục của bạn trong spinner.


2
Văn bản @Hirus sẽ có màu trắng chỉ cho mục được chọn hiện tại.
tesla

8
@SANTHOSH tốt, bạn phải thêm id vào TextView, chỉ cần thêm vào đó android:id="@+id/customSpinnerItemTextView". Nếu bạn đã gỡ lỗi này, bạn sẽ biết điều này.
vilpe89

3
@ vilpe89 bạn có thể sửa đổi mã trên của bạn để hiển thị những gì bạn có ý nghĩa bởi điều này? Android này: id đi đâu? chắc chắn không có trong thẻ spinner, vì nó có id riêng. nhưng không có nghĩa gì khi thêm nó vào thẻ textview mà bạn đã tạo ở trên. Làm thế nào để tôi tham khảo rằng tôi muốn sử dụng thẻ này trực tiếp từ XML? Ngoài ra, khi tạo XML từ Eclipse, tôi không thấy bất kỳ tùy chọn nào để tạo tệp XML chỉ chứa TextView, làm thế nào để nó hoạt động ???
Michael

29
Chỉ cần một lưu ý nhỏ. Textsize nên được sử dụng sp thay vì dp / dip
ymerdrengene

18
Điều này không thể được thực hiện bằng cách chỉ sử dụng phong cách? Tôi ngạc nhiên khi các công cụ nhỏ rất khó tạo kiểu trong Android .. điều này thật khó chịu .. Tôi ước họ có một hệ thống tạo kiểu như css
yeahman

183

Đơn giản và sắc nét ...:

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
Đây là giải pháp tốt nhất cho tôi, vì tôi cần thay đổi màu của văn bản trong spinner, nhưng không có trong danh sách xuất hiện. Cảm ơn bạn.
peter.bartos

7
Đối với tôi, màu vật phẩm nhấp nháy, chuyển từ màu gốc sang màu tôi chọn
Felipe Conde

@FelipeConde Bạn đã bao giờ tìm thấy câu trả lời chưa? Tôi có cùng một câu hỏi. Câu hỏi của tôi là ở đây: stackoverflow.com/questions/33908564/ Kiếm
Rock Lee

@FelipieConde Đối với bạn, ban đầu nó có màu tăng dần, sau đó bạn thay đổi thành màu khác bằng tay, vì vậy trông nó rất mệt mỏi. Lúc đầu, nó có <item name = "colorAccent"> @ color / color_primary </ item> Sau đó, bạn thay đổi bằng tay theo chương trình, Vì vậy, bạn cảm thấy chớp mắt
Ashraf

2
điều này làm việc cho tôi nhưng vấn đề của tôi là khi tôi trở về từ một ứng dụng phân đoạn bị hỏng vì nó nhận được một con trỏ null trên đoạn mã trên
Akshay Shah

145

Nếu tất cả các spinners có thể có cùng màu văn bản cho các mục TextView của chúng, một cách tiếp cận khác là sử dụng kiểu tùy chỉnh cho các mục thả xuống của spinner:

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

Và xác định màu tùy chỉnh của bạn trong res / value / colors.xml:

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

2
Và làm thế nào để áp dụng giải pháp này cho chủ đề Appcompt? Tôi đã kết nối nó bằng cách ghi đè chủ đề gốc "@ style / Widget.AppCompat.DropDownItem.Spinner" và nó đã không hoạt động
GyRo

11
Tôi cũng sẽ thêm: <item name = "android: spinnerItemStyle"> @ style / mySpinnerItemStyle </ item> Điều này đảm bảo rằng văn bản được thu gọn có cùng màu - trong trường hợp đây là hành vi mong muốn.
vòng lặp vô hạn

4
cũng không hoạt động với tôi, phong cách hoàn toàn bị bỏ qua
diogo.abdalla

1
@Whypee vui lòng chỉnh sửa câu trả lời của bạn theo các đề xuất của vòng lặp vô hạn mà nó hoạt động hoàn hảo với tôi
Chintan Desai

4
Đối với chủ đề AppCompat, chỉ cần xóa android:như thế này<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D

73

Đây là một liên kết có thể giúp bạn thay đổi màu sắc của Spinner :

Bấm vào đây

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

Bạn cần tạo tệp bố cục của riêng mình với định nghĩa tùy chỉnh cho mục 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" />

Nếu bạn muốn tùy chỉnh các mục danh sách thả xuống, bạn sẽ cần tạo một tệp bố cục mới. 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"/>

Và cuối cùng là một thay đổi khác trong tuyên bố của spinner:

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

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

Đó là nó.


2
Đây là phản hồi tự động xuất phát từ việc xem xét bài đăng của người dùng mới. Vui mừng khi thấy bạn chỉnh sửa câu trả lời! :)
Marko

1
Dường như, android:textSize="20sp"trong đoạn mã đầu tiên là vô dụng: văn bản của điều khiển được xác định trongspinner_item.xml
DenisGL

23

Nếu bạn làm việc với android.support.v7.widget.AppCompatSpinner thì đây là giải pháp được thử nghiệm đơn giản nhất bằng cách sử dụng các kiểu:

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

Và phong cách:

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

Nhược điểm duy nhất là android: backgroundTint đặt màu cho cả mũi tên thả xuống và nền thả xuống.


3
bạn sử dụng style="@style/Widget.AppCompat.Spinner.Underlined"nhưng bạn chỉ có style name="Spinner"...
user25

1
paddingStartyêu cầu API 17, backgroundTintyêu cầu API 21.
CoolMind

18

Để tránh bị lag, bạn không chỉ đặt các thuộc tính văn bản trong trình onItemSelectednghe mà còn trong onCreatephương thức của Activity (nhưng nó hơi khó).

Cụ thể, bạn cần đặt cái này vào onCreatesau khi cài đặt bộ chuyển đổi:

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

Và sau đó đặt nó vào onItemSelected:

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

Dưới đây là một ví dụ đầy đủ:

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

}  

Để biết thêm chi tiết, xem câu hỏi của tôi .


15

Nếu bạn muốn màu văn bản chỉ thay đổi trong mục đã chọn, thì đây có thể là một cách giải quyết có thể. Nó làm việc cho tôi và cũng nên làm việc cho bạn.

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

6

Đối với một người chỉ cần Stylecách cho AppCompat.

Kết quả
nhập mô tả hình ảnh ở đây nhập mô tả hình ảnh ở đây

kiểu tệp

<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
Và nếu bạn muốn đặt android:entrieschương trình với kiểu được xác định.
Thử cái này.

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

Như trong mã, sử dụng cùng Contextvới Spinnerđiều quan trọng nhất.

spinner.getContext()

5

Để thay đổi màu của văn bản spinner:

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

Đây là cách đơn giản nhất và nó hiệu quả với tôi, cảm ơn!
Mousa Alfh Daily

tôi cũng thích giải pháp này nó đơn giản và hoạt động tốt.
korchix

4

Thay vì tạo bố cục tùy chỉnh để có kích thước nhỏ và nếu bạn muốn sử dụng kích thước nhỏ bên trong của Android LAYOUT cho công cụ quay vòng, bạn nên sử dụng:

"Android.R.layout.simple_gallery_item" thay vì "android.R.layout.simple_spinner_item".

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

Nó có thể giảm kích thước bố trí của spinner. Đó chỉ là một mẹo đơn giản.

Nếu bạn muốn giảm kích thước của danh sách thả xuống, hãy sử dụng:

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

4

Cách dễ nhất để sử dụng lại / thay đổi tài nguyên android.R.layout chỉ là đi định nghĩa. Trong Android Studio, làm Ctrl+ Btrên android.R.layout.simple_spinner_item.xml.

Nó sẽ đưa bạn đến tập tin tài nguyên. Chỉ cần sao chép tệp tài nguyên và thêm bố cục mới trong thư mục Gói.R.layout của bạn và thay đổi textColor của textview theo ý muốn và sau đó chỉ cần gọi nó trong bộ điều hợp như thế này:

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

4

Đối với những người muốn thay đổi DrowDownIconmàu sắc, bạn có thể sử dụng như thế này

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

bạn có thể thử không<item name="android:colorControlNormal" tools:targetApi="lollipop">@color/light_gray</item>
AMAN SINGH

đặt dòng này theo phong cách của bạnAppTheme
AMAN SINGH

Đây là mã đã hoạt độngDrawable 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

Có thể thay đổi màu văn bản bằng cách ghi đè phương thức getView như sau:

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


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

chỉ sử dụng cái này

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

Một biến thể khác của giải pháp của Ashraf là đảm bảo bạn đang tính đến kích thước màn hình. Bạn sẽ cần lấy spinner trong onCreate và đặt trình nghe sau khi bạn đặt bộ điều hợp:

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

Sau đó, bạn có thể bắt đầu thay đổi kích thước văn bản của chế độ xem hiển thị trước khi nhấp vào công cụ quay vòng:

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

    }
};

Tất cả bạn cần làm là tạo bố cục các thư mục cụ thể như thế này:

giá trị-sw360dp

giá trị-sw600dp

giá trị-sw800dp

sau đó thêm một tệp xml có tên "bool.xml" vào mỗi thư mục đó:

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

1

Đầu tiên chúng ta phải tạo xmltệp tài nguyên đơn giản cho textviewnhư sau:

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

và lưu nó sau khi thiết lập trên danh sách bộ chuyển đổi của bạn.


1

bạn có thể có loại bộ điều hợp này cho spinner, hoàn toàn tùy chỉnh:

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

trong khi R.layout.spinner bản là:

<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

Nếu bạn muốn có một phương thức đơn giản, để thêm các mục vào danh sách thả xuống, bạn thường thêm chúng vào chuỗi XML. Dưới đây là một ví dụ về cách thêm màu bằng cách sử dụng tệp String.xml:

LỰA CHỌN TUỔI

<string-array name="age_array">

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

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

</string-array>

Thủ thuật dễ thương ... hữu ích và nhanh chóng cho một spinner, màu sắc cần phải là một chuỗi giá trị màu thô không phải từ xml
me_

0

Tôi đã làm điều này như sau. Tôi đã sử dụng các phương thức getDropDownView () và getView ().

Sử dụng getDropDownView()cho Spinner đã mở.

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

Và sử dụng getView()cho Spinner đóng.

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

Nó được kiểm tra đúng mã và hoạt động trong ứng dụng trong kho ứng dụng
Bhavinkumar Patel

0

Hãy thử phương pháp này. Đó là làm việc cho tôi.

@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

chỉ cần thêm phong cách mới như thế này:

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

và sử dụng nó:

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

tất cả đều thích mã hóa của bạn ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.