setBackgroundColor (drawable)! = android: background = (drawable)? - PullRequest
0 голосов
/ 18 января 2011

У меня есть собственный нарисованный ресурс для отображения моих элементов в ListView, фактически два, потому что я хотел, чтобы мои результаты имели чередующиеся цвета фона, но оба реагировали на щелчки, меняя их цвет.Проблема заключается даже в том, что даже если назначить хотя бы одну из этих объектов рисования для моего контейнера LinearLayout через XML-макет, он работает нормально, а через код Java - нет.Если быть точным, это работает:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/result_white"
android:id="@+id/result"
>

, но это (в моем ResultAdapter, который расширяет ArrayAdapter) не:

LinearLayout result = (LinearLayout) v.findViewById(R.id.result);
result.setBackgroundColor(R.drawable.result_white);

Моя конечная цель, конечно, иметь чередование 'result_white 'и' result_ltgray 'рисуются для результатов, поэтому первое XML-решение на самом деле не удовлетворяет моим потребностям.Что мне не хватает в коде Java, пожалуйста?

Ответы [ 3 ]

5 голосов
/ 18 января 2011

Что ж, если вы используете только одноцветные фоны, вы должны вместо этого использовать Цвета , так как рисованными объектами могут быть формы, градиенты и многое другое.Теперь, чтобы фактически использовать цвет, ваш код будет выглядеть примерно так:

result.setBackgroundColor(mContext.getResources.getColor(R.color.result_white));

, где mContext - это контекст, и у вас есть цвет (например, 0xFFFFFFFF) в вашем файле res / values ​​/ colors.xml.

Также обратите внимание на Списки состояний цветов для изменения цвета при нажатии / выборе / и т.д.

4 голосов
/ 18 января 2011

Спасибо за вашу помощь, ребята, но мне нужно было сделать следующее:

result.setBackgroundResource(R.drawable.result_white);

Таким образом, я мог бы легко реализовать это в моем ResultAdapter для чередующихся результатов, реагирующих на клики с изменяющимся фоном:

LinearLayout result = (LinearLayout) v.findViewById(R.id.result);

        if (position % 2 == 0)
            result.setBackgroundResource(R.drawable.result_white);
        else
            result.setBackgroundResource(R.drawable.result_ltgray);
2 голосов
/ 18 января 2011

Убедитесь, что вы импортировали правильную ссылку для R (android.R для рисования на Android, your_app_path.R для вашего).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...