我一直在尝试在具有 JPG(~770 x 1024)的单个 ImageView 上使用 ScrollView,而不是 600x800 的 AVD。
我的 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 让我滚动剩余部分(如果有的话)。
出于某种原因,我看到可绘制尺寸是 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事件上滚动?
谢谢
什穆尔
PS:另一个观察:将图像缩小到 600x780(按比例缩放),它确实可以正常工作。不幸的是,对我来说,使用一组缩小的图像克隆是不可行的。