我需要根据尺寸将图像容器大小设置为“GridLayout”。
抓住他们的水平尺寸,但我也需要垂直尺寸。
我错过了什么?感谢
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/fondo_01">
<GridLayout
android:layout_width="match_parent"
android:layout_height="250dp"
android:useDefaultMargins="false"
android:background="@drawable/corners_main_layout"
android:animationCache="false"
android:layout_margin="@dimen/padding_white"
tools:layout_margin="@dimen/padding_white"
android:columnOrderPreserved="false"
android:columnCount="3">
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_columnWeight="1"
android:id="@+id/linearLayout">
<ImageView
android:src="@drawable/ic_skinav"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/idskinav" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/skinav"
android:layout_gravity="center"
android:textColor="@android:color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_columnWeight="1"
android:id="@+id/linearLayout9">
<ImageView
android:src="@drawable/ic_social"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/idsocial" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/social"
android:layout_gravity="center"
android:textColor="@android:color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_columnWeight="1"
android:id="@+id/linearLayout8">
<ImageView
android:src="@drawable/ic_stats"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/idstats" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/stats"
android:layout_gravity="center"
android:textColor="@android:color/black" />
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_columnWeight="1"
android:id="@+id/linearLayout10"
>
<ImageView
android:src="@drawable/ic_alerts"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/idalerts" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/alerts"
android:layout_gravity="center"
android:textColor="@android:color/black" />
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_columnWeight="1"
android:id="@+id/linearLayout2">
<ImageView
android:src="@drawable/ic_inbox"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/idinbox" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/inbox"
android:layout_gravity="center"
android:textColor="@android:color/black"
/>
</LinearLayout>
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="0dp"
android:orientation="vertical"
android:layout_columnWeight="1"
android:id="@+id/linearLayout3">
<ImageView
android:src="@drawable/ic_info"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/idinfo" />
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text="@string/info"
android:layout_gravity="center"
android:textColor="@android:color/black"
/>
</LinearLayout>
</GridLayout>
</LinearLayout>
还有另一种更简单的方法吗?我尝试了新的ConstraintLayout,但我还没有成功。
------ ---- UPDATE
答案 0 :(得分:1)
您可以使用方形图像视图来正确调整网格项的大小。
创建一个单独的类,用于为ImageView动态定义应继承ImageView类的大小,如下所示:
public class SquareImageView extends ImageView {
public SquareImageView(Context context) {
super(context);
}
public SquareImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
int width = getMeasuredWidth();
setMeasuredDimension(width, width);
}
}
setMeasuredDimension(宽度,宽度);将自动将您的身高设置为宽度。
在xml文件中,使用此类作为视图来代替ImageView,如下所示:
<com.packagepath.SquareImageView
android:id="@+id/Imageview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />