我不能在上面使用,因为我有适配器,并且图像是从它们设置的以显示在GridView
. 所以,在 2019 年,我的做法如下:
<RelativeLayout
android:id="@+id/relativeLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center">
<your_package_name.directory.SquareImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"
android:layout_centerInParent="true"
android:id="@+id/gridImageView"/>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:paddingStart="6dp"
android:paddingEnd="6dp"
android:paddingTop="3dp"
android:paddingBottom="3dp"
android:textColor="@android:color/white"
android:background="@drawable/shape_image_holder_text"
android:alpha=".85"
android:scaleType="centerCrop"
android:textSize="24sp"/>
</RelativeLayout>
Stacking 视图的关键属性是android:layout_centerInParent="true"
.
另请注意,我创建是android:background="@drawable/shape_image_holder_text"
为了在带有一些背景的文本视图周围获得一些角半径。这是那个xml:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="#22000000" />
<stroke
android:color="#33000000"
android:alpha="0.6"
android:width="1dp" />
<corners android:radius="12dp" />
</shape>
</item>
</selector>
让我的图像在 GridView 中调整为相同大小的高度和宽度。我创建了一个自定义类(如果你不使用或者你不关心这个,SquareImageView
你可以使用默认值)。ImageView
GridView
我的 SquareImageView.java 文件:
import android.content.Context;
import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
public class SquareImageView extends AppCompatImageView {
public SquareImageView(Context context) {
super(context);
}
public SquareImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//noinspection SuspiciousNameCombination
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
它看起来像这样: