Tôi đã cố gắng sử dụng một ScrollView trên một ImageView đơn với JPG (~ 770 x 1024) trên AVD là 600x800.Lề thừa khi thêm ImageView vào ScrollView trong Android
main.xml của tôi là:
<?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>
Bây giờ, tôi thêm một ImageView duy nhất với
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.
Kết quả là Những hình ảnh được hiển thị trong một trung tâm của một scrollview, được bao bọc bởi nền khu vực trên cùng và dưới cùng như sau:
| } blank
| }
Image|
. |
. :
. :
: } blank
: }
^-scrollbar
Thay vì chỉ
Image|
. |
. |
. |
. :
Tôi đã cố gắng thiết lập nền của ImageView đỏ và xác minh rằng lề trống là nền ImageView.
iv.setBackgroundColor(color.Red);
Nơi tôi mong chờ hình ảnh để có không quá kích thước của nó (quy mô với kích thước AVD) và tôi hy vọng các scrollview để cho tôi di chuyển trên phần còn lại (nếu có).
Vì một lý do nào đó, tôi thấy rằng kích thước có thể vẽ là 600x1024.
Hơn nữa Tôi cố gắng để thêm một LinearLayout với một cái nhìn văn bản dummy như cách bố trí tuyến tính là một phụ huynh cho ImageView và TextView, và scrollview là một phụ huynh đến 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);
Kết quả là rất đặc biệt: Toàn bộ bố trí đã được thiết lập vào chiều cao của một cái nhìn văn bản text-ít (19).
______________________
| T I T L E B A R |
+--------------------+
| []<-image |
| height=19px |
. .
. .
+--------------------+
Điều quan trọng là tôi tránh phải kéo giãn hình ảnh. Tôi không thể sử dụng FIT_XY cho ScaleType. Cách được khuyến nghị để triển khai hiển thị một trang có khả năng được cuộn là gì? Tôi có phải thực hiện thủ công với bố cục đơn giản và cuộn theo số GestureDetector.OnScroll sự kiện không?
Cảm ơn
Shmuel
Tái bút: quan sát khác: Với một hình ảnh thu nhỏ để 600x780 (tỉ lệ tương ứng) nó hoạt động đúng. Thật không may, đối với tôi nó không phải là khả thi để sử dụng một tập hợp các bản sao thu nhỏ của hình ảnh.
Một oops ... Nó Cây trái và phải hơn một chút :( Tôi thực sự muốn chiều rộng để hành xử như FILL_PARENT, và chiều cao như WRAP_CONTENT, và nếu screenView.getHeight()> screen_height, sau đó tôi muốn ScrollView cuộn (nhưng chỉ trong ranh giới của hình ảnh ... không nhiều hơn thế) Thực ra, tôi đã làm điều nhanh chóng và rất bẩn: FIT_START Hình ảnh được hiển thị trên đầu trang của ScrollView và nó không sao ngay từ cái nhìn đầu tiên, miễn là bạn không thử cuộn xuống - và sau đó bạn thấy một khu vực màu đen lớn. – Meymann