Ответ 1
Я смог самостоятельно решить проблему. Поэтому я отвечаю на это всем остальным;).
Проблема заключалась в том, что я загрузил мой drawable один раз в конструктор, потому что я думал, что мне не придется загружать его для каждого нового элемента списка. Но андроид-система обрабатывает их как один и тот же объект памяти. поэтому каждый фон listitem использует одно и то же mem-пространство (я надеюсь, что это не так, я так думаю). Если я начну прокрутку, следующий список будет объявлен и изменит высоту и ширину фона в соответствии с его потребностями, например, следующий элемент будет только 50 дп, он изменит сохраненное значение на это. Теперь любой другой фон списка изменится более или менее на эту высоту.
Простое исправление заключается в том, что вам необходимо загрузить и применить colorfilter для каждого нового элемента. ESPEC. в методе getView.
@Override
public View getView(int pos, View convertView, ViewGroup parent) {
View v = null;
leftbox = (NinePatchDrawable) r.getDrawable(R.drawable.bubble_green);
leftbox.setColorFilter( 0xff00c0ff, Mode.MULTIPLY );
v = inflater.inflate(R.layout.list_view_item_right, null);
TextView t = (TextView)v.findViewById(R.id.text);
t.setBackgroundDrawable(leftbox);
Надеюсь, этот ответ был полезен.
EDIT (в несколько раз проще):
Если вы хотите применить colorFilter к макету (Textview...), сделайте это так (спасибо Pasha):
TextView t = (TextView)v.findViewById(R.id.text);
t.getBackground().setColorFilter(0xff00c0ff, Mode.MULTIPLY );