He estado tratando de usar un ScrollView en un solo ImageView con un JPG (~ 770 x 1024) sobre un AVD de 600x800.Márgenes redundantes al agregar ImageView a ScrollView en Android
Mi main.xml es:
<?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>
Ahora, agrego un solo ImageView con
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.
El resultado es La imagen se muestra en un medio de una ScrollView, envuelto con el fondo área en la parte superior e inferior de la siguiente manera:
| } blank
| }
Image|
. |
. :
. :
: } blank
: }
^-scrollbar
En lugar de simplemente
Image|
. |
. |
. |
. :
Traté de establecer el fondo del rojo ImageView, y se verificó que los márgenes en blanco eran de fondo ImageView.
iv.setBackgroundColor(color.Red);
Cuando yo esperaría que la imagen de no tomar más de su tamaño (a escala en el tamaño AVD) y espero lo ScrollView que me deje Desplazarse por el resto (si lo hay).
Por alguna razón, veo que el tamaño dibujable es 600x1024.
Además He intentado añadir un LinearLayout con miras texto de relleno, tales como el diseño lineal es un padre para el ImageView y la Vista de Texto, y el ScrollView es uno de los padres a la 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);
El resultado fue muy peculiar: todo el diseño se puso en la altura de un texto ver texto-less (19).
______________________
| T I T L E B A R |
+--------------------+
| []<-image |
| height=19px |
. .
. .
+--------------------+
Es importante para mí evitar estirar la imagen. No puedo usar FIT_XY para ScaleType. ¿Cuál es la forma recomendada de implementar una pantalla de una página que potencialmente se puede desplazar? ¿Debo hacerlo manualmente con un diseño simple y desplazándome en GestureDetector.OnScroll eventos?
Gracias
Shmuel
P.S: Otra observación: Con una imagen a escala reducida a 600x780 (escalado proporcional) que funciona correctamente. Desafortunadamente, para mí no es factible usar un conjunto de clones reducidos de las imágenes.
Otra Vaya ... Se recorta la izquierda y la derecha más que un poco :( que realmente quieren el ancho se comporte como FILL_PARENT, y la altura como WRAP_CONTENT, y si imageView.getHeight()> screen_height, entonces quiero que ScrollView se desplace (pero solo en los límites de la imagen ... no más que eso). En realidad, he estado haciendo un cosa rápida y muy sucia: FIT_START. La imagen se muestra en la parte superior de ScrollView y está bien a primera vista, siempre que no intente desplazarse hacia abajo, y entonces ves una gran área negra. – Meymann