将RelativeLayout包装器调整为PagerAdapter中ImageView的大小

时间:2013-08-14 19:56:42

标签: android android-pageradapter

我有一个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。

1 个答案:

答案 0 :(得分: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);