Android 2.3.3 Listview Фон серый - PullRequest
       1

Android 2.3.3 Listview Фон серый

3 голосов
/ 23 сентября 2011

Итак, у меня довольно раздражающая проблема с просмотром списка. Мое приложение работало нормально до тех пор, пока на моем Droid 2 не появилось обновление Android 2.3.3.

Есть несколько аспектов этой проблемы. 1. Фон всегда серый в пустых слотах. 2. Последняя запись в списке кажется невидимой, пока она не выбрана. При выборе вы можете увидеть черный текст, но без фона. 3. Другие / более старые записи в списке отображаются с правильным цветом фона.

Я пробовал довольно много вещей, и, похоже, это ничего не исправило. Мысли? * * 1005

Определение списка

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_height="wrap_content" 
 android:gravity="left|center"
 android:layout_width="wrap_content" 
 android:layout_alignParentBottom="true"
 android:paddingLeft="1px">
 <TextView android:text="" 
 android:id="@+id/list_view_text_view"
 android:layout_width="wrap_content" 
 android:textSize="13sp"    
 android:singleLine="false"
 android:layout_height="wrap_content"
 android:layout_marginLeft="1sp">
</TextView>


</LinearLayout>

Основной макет списка

         <ListView android:id="@+id/ListView01" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:layout_alignRight="@+id/Button06" 
        android:layout_below="@+id/TextView01" 
        android:layout_alignLeft="@+id/TextView01"
        android:layout_marginBottom="2sp"
        android:layout_marginRight="2sp"
        android:layout_marginLeft="2sp"
        android:layout_above="@+id/EditText01" 
        android:transcriptMode="normal"
        android:footerDividersEnabled="false"
        android:headerDividersEnabled="false"
        android:gravity="bottom"
 >
 </ListView>

Адаптер Listveiw

private class EfficientAdapter extends BaseAdapter {
       private LayoutInflater mInflater;

       public EfficientAdapter(Context context) {
       mInflater = LayoutInflater.from(context);

       }

       public int getCount() {
       return comment_list.size();
       }

       public Object getItem(int position) {
       return position;
       }

       public long getItemId(int position) {
       return position;
       }
       public View getView(int position, View convertView, ViewGroup parent) {
       ViewHolder holder;

       if (convertView == null) {
       convertView = mInflater.inflate(R.layout.listview, null);
       holder = new ViewHolder();
       holder.text = (TextView) convertView
       .findViewById(R.id.list_view_text_view);

       convertView.setTag(holder);
       } else {
       holder = (ViewHolder) convertView.getTag();

       }

       holder.text.setText(comment_list.get(position).toString());

       return convertView;
       }

       class ViewHolder {
       TextView text;
       }
       }

Это код, который я использую, чтобы попытаться установить фон в моей основной программе.

        list_view_comments.setBackgroundResource(R.color.color_con);
        list_view_comments.setDrawingCacheBackgroundColor(R.color.color_con);
        list_view_comments.setBackgroundColor(R.color.color_con);
        list_view_comments.setCacheColorHint(R.color.color_con);

Ответы [ 3 ]

12 голосов
/ 05 октября 2011

Ваша проблема такая же, как эта проблема на SO ... Фон списка - серый на Droid 3

Вот решение, которое Motorola предлагает нам в качестве обходного пути ... http://community.developer.motorola.com/t5/MOTODEV-Blog/Why-Does-My-ListView-Look-Different/ba-p/17462

В основном они (Motorola) используют настраиваемую тему, которую необходимо переопределить с помощью таких атрибутов, как

android:overScrollFooter="@null"

Edit - ссылка выше больше не работает по какой-то причине. Однако, как сказал Кевин в комментариях, решение все равно будет работать.

1 голос
/ 13 октября 2011

Как нарисовать ListView в OS v2.3, чтобы дополнительное пространство под последним элементом строки отображало заданный фон вместо серого фона нижнего колонтитула по умолчанию:

overScrollFooter неприемлемо для большинства сборок.
height="wrap_content" само по себе работает, только если под вашим ListView нет других виджетов. Удаление layout_alignParentBottom="true" может работать, но также может повредить компоновку экрана в зависимости от отношений ListView с другими виджетами.

Самый простой способ уменьшить высоту вашего ListView, чтобы не было дополнительного пространства нижнего колонтитула, которое Motorola OS v2.3 хочет закрасить серым, - это обернуть ListView в другой макет, такой как LinearLayout. Сделайте LinearLayout любого желаемого размера и уменьшите height внутреннего ListView до "wrap_content". Если вам нужны дополнительные пояснения и пример, перейдите сюда: Фон нижнего колонтитула представления списка на Android 2.3.3 .

1 голос
/ 23 сентября 2011

Привет, используйте это, может быть, это полезно для вас.

list_view_comments.setBackgroundColor(getResources().getColor(R.color.color_con));

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