如何在不同的屏幕尺寸中设置交错的网格布局?
我正在使用交错网格布局管理器在我的应用程序中设置交错网格,我在卡片视图"中使用了Imageview.交错效果正常工作,但是在某些情况下,如果图像尺寸太大,则布局将像这样
I am using staggered grid layout manager to set staggered grid in my app,I have used Imageview inside "card view".The staggered effect is working properly ,but some cases when image size is too large,then the layout will be like this
[![在此处输入图片描述] [1]] [1]
[![enter image description here][1]][1]
我的xml文件
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="220dp"
android:layout_height="180dp"
card_view:cardUseCompatPadding="true"
card_view:cardCornerRadius="8dp"
android:layout_marginBottom="16dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/country_photo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:contentDescription="@string/action_settings"
android:src="@drawable/three"
android:scaleType="centerCrop" />
<ImageView
android:id="@+id/outside_imageview"
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginBottom="8dp"
android:layout_marginRight="8dp"
android:src="@drawable/varified"
android:layout_alignBottom="@id/country_photo"
android:layout_alignRight="@id/country_photo"
android:scaleType="fitEnd" />
</RelativeLayout>
cardview的宽度为220dp,高度为180 dp,图像视图的width ="match_parent"和height ="wrap_content"也是比例类型为centerCrop,这对于小尺寸图像正常工作.布局将为如下面的屏幕截图所示,如果是大尺寸图像.如何解决此问题?
The width of the cardview is 220dp and height is 180 dp ,and image views width = "match_parent " and height = "wrap_content" also the scale type is centerCrop,This is working properly for small sized images.The layout will be like below screen shot,in case of large sized images.How to solve this problem??
在小型设备上,视图如下所示
The View is like below, on small sized devices
为大屏幕布局,普通屏幕布局和小屏幕布局等设置不同的列数.使用此代码以编程方式检查设备的屏幕大小./p>
Set different number of columns for large screen ' layout's ,normal screen layout's ,and small screen layout's etc.Check the device screen size programmatically by using this code .
public void checkScreenSize()
{
int screenSize = getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK;
String toastMsg;
switch (screenSize) {
case Configuration.SCREENLAYOUT_SIZE_XLARGE:
toastMsg = "XLarge screen";
//set action
break;
case Configuration.SCREENLAYOUT_SIZE_UNDEFINED:
toastMsg = "XLarge screen";
//set action
break;
case Configuration.SCREENLAYOUT_SIZE_LARGE:
toastMsg = "Large screen";
//set action
break;
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
toastMsg = "Normal screen";
//set action
break;
case Configuration.SCREENLAYOUT_SIZE_SMALL:
//set action
toastMsg = "Small screen";
break;
default:
toastMsg = "Screen size is neither large, normal or small";
}