Я пытался использовать ScrollView на единственном ImageView с JPG (~770 x 1024) по AVD, который это 600x800.
Мой 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"
>
<ScrollView
android:id="@+id/scroller"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Теперь, я добавляю единственный ImageView с
setContentView(R.layout.main);
ScrollView sv = (ScrollView)findViewById( R.id.scroller );
ImageView iv = new ImageView(this);
iv.setImageDrawable( new BitmapDrawable( "/sdcard/770x1024.jpg" ) ); // same happens with ScaleDrawable.
iv.setScaleType( ScaleType.CENTER_INSIDE );
sv.addView( sv ); // and it does not go any better if I use Linear Layout between the ScrollView and the ImageView.
Результатом является изображение, был отображен в середине ScrollView, перенесенного с фоновой областью на вершине и нижней части как следующее:
| } blank
| }
Image|
. |
. :
. :
: } blank
: }
^-scrollbar
Вместо просто
Image|
. |
. |
. |
. :
Я пытался установить историю красного ImageView, и это проверило, что пустые поля были историей ImageView.
iv.setBackgroundColor( color.Red );
Где я ожидал бы, что изображение возьмет не больше, чем свой размер (масштабируемый к размеру AVD), и я ожидаю, что ScrollView позволит мне прокрутить по остатку (если таковые имеются).
По некоторым причинам я вижу, что drawable размер 600x1024.
Кроме того, я пытался добавить, что LinearLayout с представлением фиктивного текста, таким как линейное расположение является родителем к ImageView и TextView, и ScrollView является родителем к LinearLayout.
LinearLayout dummy = new LinearLayout( this );
dummy.addView(iv);
TextView someTextView = new TextView( this );
someTextView.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT ));
dummy.addView( someTextView );
sv.addView( dummy );
Результат был очень странным: все расположение было установлено в высоту текстового меньше текстового представления (19).
______________________
| T I T L E B A R |
+--------------------+
| []<-image |
| height=19px |
. .
. .
+--------------------+
Для меня важно постараться не расширять изображение. Я не могу использовать FIT_XY для ScaleType. Что рекомендуемый путь состоит в том, чтобы реализовать дисплей страницы, которая может быть потенциально прокручена? Сделайте я должен сделать это вручную с простым расположением и прокруткой на GestureDetector. События OnScroll?
Спасибо
Shmuel
P.S.: Другое наблюдение: С изображением, уменьшенным до 600x780 (пропорциональное масштабирование), это действительно работает правильно. К сожалению, для меня не выполнимо использовать ряд уменьшенных клонов изображений.
Если вы хотите, чтобы изображение заполнило все пространство, я бы использовал ScaleType.CENTER_CROP. Однако при этом левый и правый края изображения будут немного обрезаны.