我不能使用上述方法,因为我有一个适配器和图像是在那里设置的以在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 view 的关键属性是 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(如果您不使用GridView或者您不关心这个问题,可以使用默认的ImageView)。
我的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) {
super.onMeasure(widthMeasureSpec, widthMeasureSpec);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
它看起来像这样: