0

我有一个 xml 文件,它表示由自定义 PagerAdapter 加载的幻灯片:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/slideWrap"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#ccc"
        android:orientation="vertical">

    <ImageView
        android:id="@+id/ivSlide"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:src="@drawable/slide_im_putting_face"
        android:contentDescription="image"
        android:scaleType="fitXY"
        android:adjustViewBounds="true"/>

    <EditText
        android:id="@+id/edtSlide"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:drawable/editbox_background_normal"
        android:lines="3"
        android:gravity="top|left"
        android:inputType="textMultiLine"
        android:scrollHorizontally="false"
        android:textSize="25sp"
        android:hint="@string/main_hint"
        android:textColor="#000"
        android:padding="10dp"
        android:layout_marginBottom="40dp"
        android:layout_alignParentBottom="true"/>

</RelativeLayout>

如何将 slideWrap 容器调整为与缩放的 ImageView 完全相同的尺寸?不太确定如何使用 PagerAdapter。

4

1 回答 1

0

好的,所以额外的空白是因为 ViewPager,显然你不能为你的高度设置包装内容:https ://stackoverflow.com/a/8532550/641738

相反,我只是根据我所有幻灯片的静态宽度/高度计算了几个百分比,并相应地设置了包装器。我本可以在各自的 dp 布局文件夹中设置幻灯片尺寸,但这似乎很麻烦。只要所有幻灯片的尺寸相同,似乎在一些手持设备上都能很好地工作。百分比有点反复试验:

    // Check the display and make the necessary adjustments for Portrait mode
    if(display.getRotation() == Surface.ROTATION_0 || display.getRotation() == Surface.ROTATION_180) {
        double width = display.getWidth() * 0.93;
        double adjustedHeight = width * 0.85;
        wrapLayoutParams = new LinearLayout.LayoutParams((int)width, (int)adjustedHeight);
    }
    else {
        double height = display.getHeight() * 0.73;
        double adjustedWidth = height * 1.15;
        wrapLayoutParams = new LinearLayout.LayoutParams((int)adjustedWidth, (int)height);
    }

    slideWrap.setLayoutParams(wrapLayoutParams);
于 2013-08-20T19:43:01.197 回答