스피너 텍스트 크기와 텍스트 색상을 변경하는 방법은 무엇입니까?


432

내 Android 응용 프로그램에서 스피너를 사용하고 있으며 SQLite 데이터베이스의 데이터를 스피너에로드했는데 제대로 작동합니다. 그 코드는 다음과 같습니다.

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

이제 스피너 데이터의 텍스트 색과 텍스트 크기를 변경하고 싶습니다. XML 파일의 스피너 태그에 다음 XML 행을 사용했지만 작동하지 않습니다.

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

스피너의 텍스트 색상과 텍스트 크기를 어떻게 변경합니까?


다음 사이트를 확인하십시오 [StackoverFlow] [1] [stackoverflow] [2] [stackoverflow] [3] 이것이 중복 질문 인 것 같습니다 [1] : stackoverflow.com/questions/4880413/… [2] : stackoverflow.com/questions / 4989817 /… [3] : stackoverflow.com/questions/5836254/…
user1203673

이 게시물을보십시오 stackoverflow.com/questions/6159113/…
Ajay

1
TEXTSIZE의 올바른 사용의 SP ... 안드로이드에 있습니다 : TEXTSIZE = "11SP"
디에고 베난

답변:


780

스피너 항목에 대한 사용자 지정 XML 파일을 만듭니다.

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
@Hiral 텍스트는 현재 선택된 항목에 대해서만 흰색입니다.
tesla

8
@SANTHOSH 잘하면 TextView에 id를 추가해야합니다 android:id="@+id/customSpinnerItemTextView". 이것을 디버깅했다면 이것을 알게 될 것입니다.
vilpe89

3
@ vilpe89 위의 코드를 수정하여 이것이 무엇을 의미하는지 알 수 있습니까? 이 android : id는 어디로 갑니까? 그것이 자신의 ID를 가지고 있기 때문에 확실히 spinner 태그에는 없습니다. 그러나 위에서 만든 textview 태그에 추가하는 것은 의미가 없습니다. 이 태그를 XML에서 직접 사용하고 싶다는 것을 어떻게 참조합니까? 또한 Eclipse에서 XML을 만들 때 TextView 만 포함 된 XML 파일을 만드는 옵션이 표시되지 않습니다. 어떻게 작동합니까?
Michael

29
약간의 메모. 텍스트 크기는 dp / dip 대신 sp 를 사용해야합니다
ymerdrengene

18
스타일 만 사용하여이 작업을 수행 할 수 없습니까? 나는 작은 물건 안드로이드의 스타일 너무 어려운 방법을 놀라게하고있다 ..이 나는 그들이 CSS와 같은 스타일 시스템달라고 .. 실망
yeahman을

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
이것은 스피너에서 텍스트의 색상을 변경해야하지만 나타나는 목록에서는 변경하지 않기 때문에 가장 적합한 솔루션입니다. 감사합니다.
peter.bartos

7
나를 위해, 항목 색상이 깜박이며 원래 색상에서 내가 선택한 색상으로 이동
Felipe Conde

@FelipeConde 답을 찾은 적이 있습니까? 나도 같은 질문이 있습니다. 내 질문은 여기에 있습니다 : stackoverflow.com/questions/33908564/…
Rock Lee

@FelipieConde 당신을 위해, 처음에는 상승 색상을 취한 다음 수동으로 다른 색상으로 변경하므로 너무 피곤해 보입니다. 처음에는 <item name = "colorAccent"> @ color / color_primary </ item>이 걸립니다. 프로그래밍 방식으로 수동으로 변경 했으므로 깜박임을 느낄 수 있습니다.
Ashraf

2
이것은 나를 위해 일했지만 내 문제는 위의 코드에서 null 포인터를 가져 와서 조각 앱에서 돌아 오는 경우입니다.
Akshay Shah

145

모든 스피너가 TextView 항목에 대해 동일한 텍스트 색상을 가질 수있는 경우 다른 방법은 스피너 드롭 다운 항목에 사용자 정의 스타일을 사용하는 것입니다.

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

res / values ​​/ colors.xml에서 사용자 정의 색상을 정의하십시오.

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

2
이 솔루션을 Appcompt 테마에 적용하는 방법은 무엇입니까? 부모 테마 "@ style / Widget.AppCompat.DropDownItem.Spinner"를 재정 의하여 시도했지만 작동하지 않았습니다.
GyRo

11
<item name = "android : spinnerItemStyle"> @ style / mySpinnerItemStyle </ item>을 추가하면 축소 된 텍스트의 색상이 동일 해집니다 (원하는 동작 인 경우).
무한 루프

4
나도 작동하지 않습니다, 스타일은 완전히 무시됩니다
diogo.abdalla

1
@Whypee 무한 루프의 제안에 따라 답변을 편집하십시오. 그것은 나를 위해 완벽하게 작동했습니다
Chintan Desai

4
AppCompat 테마의 경우 다음 android:과 같이 제거 하십시오<item name="spinnerDropDownItemStyle">@style/mySpinnerItemStyle</item>
Roman_D

73

Spinner의 색상변경하는 데 도움이되는 링크는 다음과 같습니다 .

여기를 클릭하십시오

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

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

드롭 다운 목록 항목을 사용자 정의하려면 새 레이아웃 파일을 작성해야합니다. 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"/>

그리고 마지막으로 스피너 선언의 또 다른 변화 :

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

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

그게 다야.


2
새로운 사용자의 게시물을 검토 한 결과 자동 응답이었습니다. 답변을 수정 한 것을 기쁘게 생각합니다! :)
Marko

1
그것은 그 보인다 android:textSize="20sp"컨트롤의 TEXTSIZE는에 정의되어 있습니다 : 첫 번째 코드에서 쓸모spinner_item.xml
DenisGL

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>

유일한 단점은 android : backgroundTint가 드롭 다운 화살표와 드롭 다운 배경 모두에 대해 색상을 설정한다는 것입니다.


3
당신은 사용 style="@style/Widget.AppCompat.Spinner.Underlined"하지만 당신은 단지 style name="Spinner"...
user25

1
paddingStartAPI 17이 backgroundTint필요하고 API 21이 필요합니다.
CoolMind

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

이것은 가장 간단하며 나를 위해 일했습니다. 감사합니다!
Mousa Alfhaily 23

나는이 솔루션도 좋아한다. 간단하고 잘 작동합니다.
korchix

4

작은 크기를 얻기 위해 사용자 정의 레이아웃을 만드는 대신 스피너에 Android의 내부 소형 레이아웃을 사용하려면 다음을 사용해야합니다.

"android.R.layout.simple_spinner_item"대신 "android.R.layout.simple_gallery_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

android.R.layout 리소스를 재사용 / 변경하는 가장 쉬운 방법은 정의를 따르는 것입니다. Android Studio에서 Ctrl+B android.R.layout.simple_spinner_item.xml에서 를 .

리소스 파일로 이동합니다. 리소스 파일을 복사하고 Package.R.layout 폴더에 새 레이아웃을 추가하고 원하는대로 textview의 textColor를 변경 한 다음 다음과 같이 어댑터에서 호출하십시오.

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

당신의 스타일이 줄을 넣어AppTheme
AMAN 싱에게

이 코드는 작동했습니다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); }
Edijae Crusar

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


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

Ashraf 솔루션의 또 다른 변형은 화면 크기를 고려하는 것입니다. 어댑터를 설정 한 후 onCreate에서 스피너를 가져 와서 리스너를 설정해야합니다.

//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 파일을 추가하십시오.

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

저장하십시오. 귀하의 adapterlist에 설정된 후.


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

간단한 방법을 원하면 드롭 다운에 항목을 추가하기 위해 보통 strings.xml에 항목을 추가하십시오. 다음은 strings.xml 파일을 사용하여 색상을 추가하는 방법에 대한 예입니다.

연령대 선택

<string-array name="age_array">

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

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

</string-array>

귀여운 트릭 ... 하나의 오프 스피너에 유용하고 빠르면 색상은 xml이 아닌 원시 색상 값 문자열
이어야합니다.

0

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

그것은 제대로 테스트 코드와 응용 프로그램의 응용 프로그램에서 일했다
Bhavinkumar Patel

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.