如何在Imageview上显示Imageview

时间:2018-04-27 11:41:41

标签: android android-layout

我需要在图像中显示如下图像的4个图像。每个Imageview的宽度应为屏幕宽度的2/5,如下图所示。我尝试使用LinearLayout,但没有像我预期的那样得到输出。

Output should be like this

我的xml代码,

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="2"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/card1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageView
            android:id="@+id/card2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageView
            android:id="@+id/card3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageView
            android:id="@+id/card4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

    </LinearLayout>

我应该修改什么?

5 个答案:

答案 0 :(得分:1)

您需要使用weightsum 表示您需要提供三个imageview作为weight="1"并将weight="2"分配给第四个图片视图。

然后,最后您需要在父布局中将总重量添加为weightsum="5"因此,您可以获得2/5的屏幕宽度。

请尝试使用以下代码替换您的代码: -

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:weightSum="5"
        android:orientation="horizontal">

        <ImageView
            android:id="@+id/card1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageView
            android:id="@+id/card2"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageView
            android:id="@+id/card3"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="1"
            android:scaleType="fitCenter" />

        <ImageView
            android:id="@+id/card4"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"
            android:layout_marginRight="2dp"
            android:layout_weight="2"
            android:scaleType="fitCenter" />

    </LinearLayout>

它会帮助你。

答案 1 :(得分:1)

我希望这对你有用

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="5"
android:padding="10dp"
android:orientation="horizontal">

<ImageView
    android:id="@+id/card1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    android:layout_weight="1"
    android:scaleType="fitCenter"
    android:src="@mipmap/ic_launcher" />

<ImageView
    android:id="@+id/card2"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    android:layout_weight="1"
    android:scaleType="fitCenter"
    android:src="@mipmap/ic_launcher" />

<ImageView
    android:id="@+id/card3"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    android:layout_weight="1"
    android:scaleType="fitCenter"
    android:src="@mipmap/ic_launcher" />

<ImageView
    android:id="@+id/card4"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="2dp"
    android:layout_marginRight="2dp"
    android:layout_weight="2"
    android:scaleType="fitCenter"
    android:src="@mipmap/ic_launcher" />

</LinearLayout>

答案 2 :(得分:1)

public static int getScreenWidth(Context context) {

        DisplayMetrics displaymetrics = new DisplayMetrics();
        WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        windowManager.getDefaultDisplay()
                .getMetrics(displaymetrics);

        int height = displaymetrics.heightPixels;
        int width = displaymetrics.widthPixels;

        return width;
    }

使用上述方法计算屏幕宽度,然后用屏幕宽度多次计算屏幕宽度:

int imageViewWidth = getScreenWidth(this) * (2/5);

现在将此宽度设置为imageView:

imageView.getLayoutParams().width = imageViewWidth;
 imageView.requestLayout();

答案 3 :(得分:0)

您将 layout_weight 设置如下:

recognition-assets

[注意:按上述方式设置重量,进一步的代码必须相同]

答案 4 :(得分:0)

    If you want to set an image over the image then you have to use `FrameLayout` or `RelativeLayout` instead of `LinearLayout`.

Otherwise, you have to use the weightSum="5"  in your Parent `LinearLayout`
<LinearLayout 
    android:weightSum="5">

    <ImageView
        android:layout_weight="1" />

    <ImageView
        android:layout_weight="1"/>

    <ImageView
        android:layout_weight="1"/>

    <ImageView
        android:layout_weight="2"/>

</LinearLayout>