Помещение ListView
в ScrollView
никогда не вдохновляет. Но если вы хотите, чтобы ваше опубликованное поведение было похоже на XML, у меня есть 3 варианта:
Удалить ScrollView
: удаляя ScrollView
, вы можете дать ListView
с некоторый конкретный размер по отношению к общему макету (либо конкретный dp
или layout_weight
).
Заменить ListView
s на LinearLayout
s: Вы можете добавить элементы списка, просматривая список элементов, и добавлять каждое представление элемента к соответствующему LinearLayout
, надувая представление & amp; установка соответствующих данных (строка, изображение и т. д.)
Если вам действительно нужно поместить ListView
в ScrollView
, вы должны сделать ваши ListView
не с возможностью прокрутки (что практически совпадает с решением 2 выше, но с кодами ListView
), иначе макет не будет работать так, как вы ожидаете.
Чтобы сделать ListView
не подлежащим прокрутке, вы можете прочитать этот пост SO , где точное решение для меня похоже на приведенное ниже:
listView.setOnTouchListener(new OnTouchListener() {
public boolean onTouch(View v, MotionEvent event) {
return (event.getAction() == MotionEvent.ACTION_MOVE);
}
});
- Как узнать, были ли данные в URL сжаты?
Это проверяет, сжаты ли данные и распаковывает их:
from StringIO import StringIO
import gzip
request = urllib2.Request('http://example.com/')
request.add_header('Accept-encoding', 'gzip')
response = urllib2.urlopen(request)
if response.info().get('Content-Encoding') == 'gzip':
buf = StringIO(response.read())
f = gzip.GzipFile(fileobj=buf)
data = f.read()
- urllib2 автоматически распаковывает данные, если они сжаты? Будут ли данные всегда представлять собой строку?
Нет. Urllib2 не распаковывает данные автоматически, поскольку заголовок «Accept-Encoding» задается не urllib2, а с помощью: request.add_header('Accept-Encoding','gzip, deflate')