600x800 の AVD で JPG (~770 x 1024) を持つ単一の ImageView で ScrollView を使用しようとしています。
私の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 になっていることがわかりました。
さらに 、線形レイアウトが ImageView と TextView の親であり、ScrollView が LinearLayout の親であるなどのダミー テキスト ビューを使用して 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 |
. .
. .
+--------------------+
画像を引き延ばさないようにすることが重要です。ScaleType に FIT_XY を使用できません。スクロールされる可能性のあるページの表示を実装するための推奨される方法は何ですか? 単純なレイアウトとGestureDetector.OnScrollイベントでのスクロールで手動で行う必要がありますか?
ありがとう
シュムエル
PS: 別の観察: 600x780 (比例スケーリング) に縮小された画像では、正しく機能します。残念ながら、縮小された一連の画像のクローンを使用することは現実的ではありません。