当我将Image设置为ImageView时,Linearlayout会更改大小(比率)

时间:2015-11-03 23:33:33

标签: android xml android-linearlayout

我有一个带有下面XML代码的对话框,我想做的就像第一个截图中显示的那样(当我将imageview保持为空时,它正是屏幕上显示的内容):

Normal app running without image inside imageView

但是当我使用代码将图片放在imageView中时:

ImageView img1 = (ImageView) myView.findViewById(R.id.imgView1);
img1.setImageResource(R.drawable.attention);
img1.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

屏幕变为:

When app runs and image inside the imageView

我不希望包含imageViews的linearlayout改变配给量,我把重量(" 3")保持始终保持相同的比例,但是虽然它改变了。

在我的XML源代码之上:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_margin="10dp"
    android:orientation="vertical"
    android:weightSum ="10">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_weight="1"
        android:background="@drawable/dialog_bg">

        <TextView
            android:id="@+id/txt_field1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/black" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="center"
        android:orientation="vertical"
        android:layout_weight="1"
        android:background="@drawable/dialog_bg">

        <TextView
            android:id="@+id/txt_field2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:textColor="@color/black"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="left"
        android:orientation="vertical"
        android:layout_weight="2"
        android:background="@drawable/dialog_bg">

        <TextView
            android:id="@+id/txt_field3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:paddingEnd="10dp"
            android:textColor="@color/black" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="left"
        android:orientation="horizontal"
        android:layout_weight="3"
        android:background="@drawable/dialog_bg">

        <ImageView
            android:id="@+id/imgView1"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:paddingEnd="10dp"
            android:layout_weight="1"
            android:scaleType = "fitXY" />

        <ImageView
            android:id="@+id/imgView2"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:paddingEnd="10dp"
            android:layout_weight="1"
            android:scaleType = "fitXY"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="3dp"
        android:gravity="left"
        android:orientation="horizontal"
        android:layout_weight="3"
        android:background="@drawable/dialog_bg">

        <ImageView
            android:id="@id/imgView3"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:paddingEnd="10dp"
            android:layout_weight="1"
            android:scaleType = "fitXY"/>

        <ImageView
            android:id="@id/imgView4"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:paddingRight="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:paddingEnd="10dp"
            android:layout_weight="1"
            android:scaleType = "fitXY"/>

    </LinearLayout>

</LinearLayout>
</RelativeLayout>

请提出任何建议如何绕过此问题。谢谢。

1 个答案:

答案 0 :(得分:1)

我不完全确定是这样,但请尝试更改android:layout_height的{​​{1}},权重为LinearLayout而不是0dp。如果不是这样,那么它仍然更好,因为它不需要wrap_content所做的额外计算。

(也是,但无关:在您的代码中将wrap_content更改为fill_parent。它更新,是现在应该使用的内容)