Я пытаюсь использовать ScrollView на одном ImageView с JPG (~ 770 x 1024) по AVD, который составляет 600x800.Резервные поля при добавлении ImageView в ScrollView в Android
Мой 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 red, и он подтвердил, что пустые поля были фоном ImageView.
iv.setBackgroundColor(color.Red);
Где бы ожидать, что изображение не принимать не более, чем его размер (масштабируются до размера АВД) и я ожидаю, что ScrollView позволить мне прокручивать через остаток (если таковые имеются).
По какой-то причине, я вижу, что размер для вывода составляет 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 событий?
Благодаря
Шмуэль
P.S: Еще одно наблюдение: с изображением уменьшенном до 600x780 (пропорционального масштабирования) он работает должным образом. К сожалению, для меня нецелесообразно использовать набор уменьшенных клонов изображений.
Другой упс ... Он обрезает левый и право более чем немного :( я на самом деле хотите, чтобы ширина вести себя как FILL_PARENT, и высоту, подобную WRAP_CONTENT, и если imageView.getHeight()> screen_height, то я хочу, чтобы ScrollView прокручивал (но только в границах изображения ... не более того). На самом деле, я делаю Быстрая и очень грязная вещь: FIT_START. Изображение отображается поверх ScrollView, и на первый взгляд это нормально, если вы не пытаетесь прокрутить вниз - и то вы видите большую черную область. – Meymann