Задать вопрос

Android, ListView и элементы списка разной высоты?

Нужно сделать в приложении ListView, в котором элементы разной высоты.

Проблема в том, что, когда я его прокручиваю, полоса прокрутки становится разного размера в разных местах.
1d15377397f2.png

Что можно с этим сделать? Как вообще обычно делают подобные списки в приложениях типа твиттера?


Вот исходники тестового приложения:
ListTestActivity.java
public class ListTestActivity extends Activity {
	
	int[] nlines=new int[50];
	
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Random rnd=new Random();
        for(int i=0;i<50;i++)nlines[i]=rnd.nextInt(10)+1;
        ((ListView)findViewById(R.id.listview)).setAdapter(new TestAdapter());
    }
    
    public class TestAdapter extends BaseAdapter{
		public int getCount() {
			return 50;
		}

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

		public long getItemId(int position) {
			return position;
		}

		public View getView(int position, View convertView, ViewGroup parent) {
			if(convertView==null){
				convertView=View.inflate(ListTestActivity.this, R.layout.item, null);
			}
			String text="";
			for(int i=0;i<nlines[position];i++)text+="qwe qwe qwe test ";
			((TextView)convertView.findViewById(R.id.item_textview)).setText(text);
			return convertView;
		}
    	
    }
}

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<ListView android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/listview"></ListView>
</LinearLayout>


item.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent" android:layout_height="wrap_content" android:padding="10dip">
    <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/item_textview" android:text="TextView" android:textSize="20dip"></TextView>
</LinearLayout>
  • Вопрос задан
  • 4863 просмотра
Подписаться 5 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
@hacklex
ммм. Два момента, сразу бросившихся в глаза:

1) В АПИ наткнулся на
---> public void setSmoothScrollbarEnabled (boolean enabled)
В описаниях к нему сказано, что оно должно быть ВЫКЛЮЧЕНО для списков с меняющейся высотой элементов.
Соответственно, попробуй установить значение false.

2) Вот тут у человека, похоже, та же проблема. На всякий случай показываю, вдруг не было найдено.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы