在保持纵横比的同时,将ImageView缩放到父级高度

时间:2014-01-21 23:18:08

标签: android android-layout xamarin.android xamarin

经过长时间的搜索,只找到缩放ImageView宽度的结果,我希望有人可以帮我解决问题。

我在彼此之下有两个LinearLayouts,并在运行时用24个ImageViews填充它们(每个LinearLayout 12个)。两个布局都占用相同数量的高度空间,现在我想缩放ImageViews,使它们与包含它们的LinearLayout具有相同的高度,同时保持ImageView内图像的纵横比。

我尝试了很多不同的东西,比如setScaleType,setAdjustViewBounds或者用overMeiding onMeasure编写我自己的ImageView类,但到目前为止还没有任何工作,以至于ImageView从其父布局中获取了整个高度。

也许我没有把正确的想法合在一起,所以我希望有人可以帮我解决这个问题。

编辑:

源图像的大小始终为92 x 128。

布局:

firstCardHolder和secondCardHolder是包含ImageViews的布局。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:p1="http://schemas.android.com/apk/res/android"
p1:orientation="vertical"
p1:minWidth="25px"
p1:minHeight="25px"
p1:layout_width="match_parent"
p1:layout_height="match_parent"
p1:id="@+id/contentHolder">
<LinearLayout
    p1:orientation="horizontal"
    p1:minWidth="25px"
    p1:minHeight="25px"
    p1:id="@+id/timerLayout"
    p1:gravity="center"
    p1:layout_width="match_parent"
    p1:layout_height="wrap_content"
    p1:layout_alignParentTop="true"
    p1:layout_marginTop="10dp"
    p1:layout_marginLeft="5dp"
    p1:layout_marginRight="5dp"
    p1:layout_marginBottom="5dp">
    <TextView
        p1:text="03:00"
        p1:layout_width="wrap_content"
        p1:layout_height="match_parent"
        p1:id="@+id/timerTextView"
        p1:textSize="26dp" />
</LinearLayout>
<HorizontalScrollView
    p1:minWidth="25px"
    p1:minHeight="25px"
    p1:id="@+id/wordListScroll"
    p1:layout_width="match_parent"
    p1:layout_height="wrap_content"
    p1:layout_below="@+id/timerLayout"
    p1:layout_marginLeft="5dp"
    p1:layout_marginTop="5dp"
    p1:layout_marginRight="5dp"
    p1:layout_marginBottom="5dp">
    <LinearLayout
        p1:orientation="horizontal"
        p1:minWidth="25px"
        p1:minHeight="25px"
        p1:layout_width="match_parent"
        p1:layout_height="match_parent"
        p1:id="@+id/wordScrollLayout"
        p1:gravity="center_vertical" />
</HorizontalScrollView>
<LinearLayout
    p1:orientation="horizontal"
    p1:minWidth="25px"
    p1:minHeight="25px"
    p1:layout_width="match_parent"
    p1:layout_height="wrap_content"
    p1:id="@+id/footerLayout"
    p1:layout_marginLeft="5dp"
    p1:layout_marginRight="5dp"
    p1:layout_marginTop="5dp"
    p1:layout_marginBottom="15dp"
    p1:layout_alignParentBottom="true"
    p1:clipChildren="false"
    p1:clipToPadding="false">
    <TextView
        p1:layout_width="match_parent"
        p1:layout_height="match_parent"
        p1:id="@+id/hiraganaCombo"
        p1:gravity="center"
        p1:textSize="32dp" />
</LinearLayout>
<HorizontalScrollView
    p1:minWidth="25px"
    p1:minHeight="25px"
    p1:id="@+id/scrollLayout"
    p1:layout_width="wrap_content"
    p1:layout_height="match_parent"
    p1:layout_below="@+id/wordListScroll"
    p1:layout_marginTop="5dp"
    p1:layout_marginBottom="5dp"
    p1:layout_marginLeft="5dp"
    p1:layout_marginRight="5dp"
    p1:layout_above="@+id/footerLayout">
    <LinearLayout
        p1:orientation="vertical"
        p1:minWidth="25px"
        p1:minHeight="25px"
        p1:layout_width="match_parent"
        p1:layout_height="match_parent"
        p1:id="@+id/scrollContentLayout">
        <LinearLayout
            p1:orientation="horizontal"
            p1:layout_width="match_parent"
            p1:layout_height="match_parent"
            p1:layout_weight="0.5"
            p1:id="@+id/firstCardHolder"
            p1:background="#ff009411"
            p1:minWidth="25px"
            p1:minHeight="25px" />
        <LinearLayout
            p1:orientation="horizontal"
            p1:layout_width="match_parent"
            p1:layout_height="match_parent"
            p1:layout_weight="0.5"
            p1:id="@+id/secondCardHolder"
            p1:background="#ffd20000" />
    </LinearLayout>
</HorizontalScrollView>
</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

Try ImageView.ScaleType CENTER_INSIDE.

“均匀缩放图像(保持图像的纵横比),使图像的尺寸(宽度和高度)等于或小于视图的相应尺寸(减去填充)。”

希望有所帮助!

答案 1 :(得分:0)

解决了我在运行时获取父布局高度并使用它计算我的ImageViews宽度的问题。