Почему мои спиннеры для Android выглядят ужасно? - PullRequest
2 голосов
/ 11 июля 2011

Я использую тему по умолчанию (темная) и цель уровня 2.2 / API 8.Когда я добавляю базовый счетчик в мои макеты, они выглядят ужасно.Текст очень трудно читать (серый на сером), и стрелка выглядит забавно:

My Spinners

Если я использую светлую тему, они выглядят хорошо.Если я посмотрю на примеры API Android, то их блесны выглядят нормально в темной теме по умолчанию:

Normal Spinners

Почему все мои блесны уродливы и нечитаемы?Что я делаю не так?

Самый простой из возможных кодов будет отображаться так:

  final Spinner mySpinner = (Spinner) findViewById(R.id.mySpinner);
  List<String> list = new ArrayList<String>();
  list.add("foo");
  list.add("bar");
  mySpinner.setAdapter(new ArrayAdapter<String>(MyActivity.this, R.layout.list_item, list));

и макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <Spinner
        android:id="@+id/mySpinner"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"></Spinner>
</LinearLayout> 

Ответы [ 5 ]

3 голосов
/ 11 июля 2011

Я бы установил layout_height на счетчике на wrap_content вместо match_parent. Я не вижу кода, связанного с настройкой некоторых других опций, таких как адаптер и т. Д., Поэтому я предполагаю, что какой-то код отсутствует. Мне интересно, если счетчик отключен и почему он так серым цветом.

Ах, это может быть ваш фон показывает через элемент управления. Попробуйте изменить цвет фона на LinearLayout, посмотрите, светит ли он.

2 голосов
/ 11 апреля 2012
mySpinner.setAdapter(new ArrayAdapter<String>(
        MyActivity.this,
        android.R.layout.simple_spinner_item, list));
1 голос
/ 24 марта 2013

Я столкнулся с подобной проблемой и понял, что ошибка была "контекстом", выбранным при создании адаптера. Я использовал «getApplicationContext ()», и это вызывало затенение изображения. Как только я изменил его на контекст действия «MainActivity.this», проблема была исправлена. Спасибо nz_karl за указание на это.

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

Для непрозрачного черного необходимо установить для атрибута TextView TextColor счетчика значение 0xFF000000.

В вашем случае вы можете расширить класс ArrayAdapter, чтобы getView возвращал представление с атрибутом TextColor 0xFF000000.

1 голос
/ 11 июля 2011

http://polyclefsoftware.blogspot.com/2009/06/how-to-change-your-spinner-typeface.html

Попробуйте прочитать эту страницу.В нем рассказывается, как настроить текст в Spinner.

...