Избыточные поля при добавлении ImageView к ScrollView в Android

Я пытался использовать 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 (пропорциональное масштабирование), это действительно работает правильно. К сожалению, для меня не выполнимо использовать ряд уменьшенных клонов изображений.

5
задан Meymann 10 June 2010 в 14:40
поделиться

1 ответ

Если вы хотите, чтобы изображение заполнило все пространство, я бы использовал ScaleType.CENTER_CROP. Однако при этом левый и правый края изображения будут немного обрезаны.

0
ответ дан 18 December 2019 в 09:47
поделиться
Другие вопросы по тегам:

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