Цвет текста замкнутой прядильщика - PullRequest
21 голосов
/ 03 февраля 2011

Я понимаю, что закрытый счетчик на самом деле - View, я думаю.Но я предполагаю, что там где-то есть TextView, чтобы показать текст.Как мне получить доступ к этому TextView, чтобы я мог изменить цвет текста?

РЕДАКТИРОВАТЬ: Мне нужно изменить это на лету, а не в XML.

TextView v = (TextView) getView(mySpinner);

v.setTextColor(.....

Это не работает ...

Спасибо!

    array_typ=new String[5];
    array_typ[0]="Pressure";
    array_typ[1]="Level";

    array_typ[2]="Overage";
    array_typ[3]="Under";
    array_typ[4]="Taken";


    adaptertyp = new ArrayAdapter<Object>(this,R.layout.simple_spinner_item, array_typ);
    typ.setAdapter(adaptertyp);

Ответы [ 5 ]

33 голосов
/ 03 февраля 2011

Чтобы изменить цвет текста, создайте новый XML-файл в папке res / layout (например, my_spinner_text.xml). Добавьте текстовое представление в новый XML-файл и измените его следующим образом:

<TextView android:id="@+id/spinnerText" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:layout_centerHorizontal="true"
    android:textColor="#CCCCCC" 
    android:textSize="20dp" 
    xmlns:android="http://schemas.android.com/apk/res/android"/>

Создайте ArrayAdapter, который использует новый TextView, и установите его в спиннер:

    Spinner localSpinner = (Spinner)findViewById(R.id.mySpinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
                R.array.spinner_array,
                R.layout.my_spinner_text);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    localSpinner.setAdapter(adapter);
23 голосов
/ 31 января 2012

Вы можете изменить цвет текста или получить доступ к просмотру текста в событии setOnItemSelectedListener,

            spinnerObject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
                 ((TextView)parentView.getChildAt(0)).setTextColor(Color.rgb(249, 249, 249));   

            }
9 голосов
/ 03 февраля 2011

Я понимаю, что закрытый счетчик - это, на самом деле, представление.

Да. В частности, это то, что вы сказали SpinnerAdapter создать.

Но я предполагаю, что там есть TextView для отображения текста.

Это будет зависеть от того, что вы сказали SpinnerAdapter создать.

Как мне получить доступ к этому TextView, чтобы я мог изменить цвет текста?

В идеале вы этого не сделаете - сначала вы даете ему правильный цвет, с помощью всего, что вы сказали SpinnerAdapter для создания. Если цвет меняется, переопределите getView() в вашем SpinnerAdapter и измените цвет в этой точке.

В крайнем случае, вы можете попробовать позвонить getSelectedView(), чтобы получить текущий View, отображаемый закрытой Spinner, но все изменения, которые вы здесь сделаете, могут быть исключены при следующем выборе пользователя, и альтернативный цвет может вернитесь позже, если ранее View было переработано.

1 голос
/ 31 августа 2011

, чтобы сделать это программно, вы должны расширить класс адаптера, например:

    ArrayAdapter<CharSequence> adapter = new ArrayAdater(this){
        @Override
        public View getView(final int position, View convertView, ViewGroup parent) {
           View v = super.getView(position, convertView, parent);           
           // change the color here of your v
           v.  ... etc. etc        
        }
    }
0 голосов
/ 14 декабря 2015

Для изменения цвета текста закрытого Spinner я должен сделать это так

...