我需要在图像中显示如下图像的4个图像。每个Imageview的宽度应为屏幕宽度的2/5,如下图所示。我尝试使用LinearLayout,但没有像我预期的那样得到输出。
我的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>
我应该修改什么?
答案 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>