Как изменить размер текста и цвет текста? - PullRequest
394 голосов
/ 28 февраля 2012

В моем приложении для 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"

Как изменить цвет текста и размер текста моего счетчика?

Ответы [ 22 ]

3 голосов
/ 05 мая 2018

Чтобы изменить цвет текста счетчика:

 public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE);}
3 голосов
/ 12 декабря 2018

Можно изменить цвет текста, переопределив метод 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 голосов
/ 27 февраля 2015

Самый простой способ повторно использовать / изменить ресурсы android.R.layout - просто перейти к определению. В Android Studio выполните Ctrl + B на android.R.layout.simple_spinner_item.xml.

Это приведет вас к файлу ресурса. Просто скопируйте файл ресурса и добавьте новый макет в папку Package.R.layout и измените textColor textview так, как вам нравится, а затем просто вызовите его в адаптере следующим образом:

ArrayAdapter<String> adapter = new ArrayAdapter<String(Context,R.layout.spinner_item, spinnerlist);
2 голосов
/ 25 февраля 2015
<?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);
2 голосов
/ 21 января 2015

Простейшее: у меня работает

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

spinnerText.setTextColor(Color.RED);
1 голос
/ 28 января 2014

Еще одним вариантом решения Ашрафа было бы убедиться, что вы учитываете размеры экрана.Вам нужно будет включить спиннер в 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) {

    }
};

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

values-sw360dp

values-sw600dp

values-sw800dp

и затем добавьте XML-файл с именем "bool.xml" в каждую из этих папок:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="isTablet">false</bool>
    <bool name="isLargeTablet">false</bool>
</resources>
1 голос
/ 25 ноября 2016

Сначала мы должны создать простой 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 голос
/ 05 декабря 2018

Если вам нужен простой метод, чтобы добавить элементы в выпадающий список, вы обычно добавляете их в 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>
0 голосов
/ 04 февраля 2019

просто добавьте новый стиль, как это:

<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 голосов
/ 14 декабря 2015

Я сделал это следующим образом. Я использовал методы getDropDownView () и getView ().

Используйте getDropDownView() для открытого Spinner.

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