设置图像时,ImageView不遵守布局规则

时间:2013-05-21 10:30:47

标签: android android-layout

我在相对布局上设置了一个缩放的图像。但是,设置图像时,将破坏布局对齐规则。图像应该与左侧对齐,但是会移动。图像越大,图像放置的左手边缘越远。其他布局项目(如依赖于图像放置的文本)也会移动。除了放置之外,缩放图像看起来很好。

图像为200px,条形高度的实际大小为70dp。我可以调整图像的大小但是想知道为什么会发生这种情况。

编辑 - 我还尝试动态设置图像image.setImageResource(R.drawable.placeholder);

   <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:background="@drawable/footer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        >
    <ImageView
            android:id="@id/icon"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/placeholder"
            android:layout_alignParentLeft="true"
            />
    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="test"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@id/icon"
            android:layout_above="@id/username"/>

    <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@id/username"
            android:text="user name test"
            android:layout_marginBottom="15dp"
            android:layout_marginLeft="15dp"
            android:layout_toRightOf="@id/icon"
            android:layout_alignParentBottom="true"/>
    <ToggleButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/play_media_btn_toggle"
            android:layout_marginTop="15dp"
            android:id="@id/play"
            android:layout_alignParentRight="true"
            android:textOn=""
            android:textOff=""/>
</RelativeLayout>

2 个答案:

答案 0 :(得分:0)

如果您动态设置图像,当您的图像调整大小时,您的支架未设置为适合图像,因此您在一侧(宽度或高度)有一些奇怪的不成比例的间隙。您需要动态执行此操作,以避免任何间隙。

编辑:这是一个例子,我如何缩放图像(以适应宽度),然后将其设置为持有人并相应调整持有人的大小,这样我控制持有人的宽度和图像和ImageView(持有人)比例类型是中心

float scaleFactor = (float)rssLayout.getWidth() / (float)bitmap.getWidth();     
    bitmap = Bitmap.createScaledBitmap(bitmap, (int)(bitmap.getWidth() * scaleFactor), (int)(bitmap.getHeight() * scaleFactor), true);
    bannerImage.setImageBitmap(bitmap);
    LayoutParams params = (LayoutParams) bannerImage.getLayoutParams();             
    params.width = bitmap.getWidth();
    params.height = bitmap.getHeight();
    bannerImage.setLayoutParams(params);

希望这有助于并享受您的工作

答案 1 :(得分:0)

adjustViewBounds的{​​{1}}设置为ImageView可能会解决您的问题。默认情况下,true在缩放内容时不会缩放边界,从而创建混乱的布局。