2011-01-17 3 views
0

У меня есть пользовательский ресурс, который можно выделить для отображения моих элементов в ListView, на самом деле два, потому что я хотел, чтобы мои результаты имели переменные цвета фона, но оба отвечали на клики, изменяя их цвет. Проблема в том, что даже при назначении даже одного из этих чертежей моему контейнеру LinearLayout через XML-макет, он отлично работает, но с помощью кода Java это не так. Таким образом, чтобы быть точным, это работает:setBackgroundColor (drawable)! = Android: background = (drawable)?

<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, пожалуйста?

ответ

4

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

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

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

5

Ну, если вы используете только одноцветные фоны, вы должны использовать Colors, так как drawables могут быть фигурами, градиентами и т. Д. Теперь, на самом деле использовать цвет, ваш код будет выглядеть примерно так:

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

где mContext контекст, и у вас есть цвет (например, 0xFFFFFFFF) в вашем Рез/значений/файла colors.xml.

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

Смежные вопросы