自定义ImageView类与屏幕中的其他元素重叠
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义ImageView类与屏幕中的其他元素重叠相关的知识,希望对你有一定的参考价值。
我正在构建一个访问WordPress网站API以列出帖子的应用程序,其中包含如下预览:
顶部的大白色空间是帖子的图像,我通过复制我在网上找到的代码实现,创建了一个扩展ImageView
和修改某些东西的类,使图像100%宽,因为以前我无法实现它。
它有效,但图像与其他元素重叠:
这是我复制和改编的代码:
public class ProportionalImageView extends AppCompatImageView {
public ProportionalImageView(Context context) {
super(context);
}
public ProportionalImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ProportionalImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
Drawable d = getDrawable();
if (d != null) {
int w = MeasureSpec.getSize(widthMeasureSpec);
int h = w * d.getIntrinsicHeight() / d.getIntrinsicWidth();
setMeasuredDimension(w, h);
}
else super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}
我想要达到的目的是使图像100%宽,但保持比例而不是重叠。
我的布局文件,每个方块:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="280dp"
android:layout_marginBottom="32sp"
android:background="@android:color/white">
<skillpoint.com.skillpoint.ProportionalImageView
android:id="@+id/imgImageUrl"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:adjustViewBounds="true" />
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_below="@+id/imgImageUrl"
android:background="@color/colorAccent" />
<TextView
android:id="@+id/tvTitle"
style="@style/Post.Preview"
android:layout_below="@+id/imgImageUrl"
android:text="Lorem Ipsum"
android:textColor="@color/colorTextColorPrimaryDark"
android:textSize="22sp" />
<TextView
android:id="@+id/tvDate"
style="@style/Post.Preview"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvTitle"
android:layout_margin="0dp"
android:text="00/00/0000"
android:textColor="@color/colorTextColorPrimaryDark"
android:textSize="12sp" />
<TextView
android:id="@+id/tvContent"
style="@style/Post.Preview"
android:layout_below="@+id/tvDate"
android:text="Lorem ipsum dolor sit amet"
android:textColor="@color/colorTextColorSecondaryDark"
android:textSize="13sp" />
</RelativeLayout>
答案
自定义
ImageView
类与屏幕中的其他元素重叠
因为你的RelativeLayout
有静态高度只需将它更改为android:layout_height="wrap_content"
你发行将解决检查下面的图像
使用
android:layout_height="wrap_content"
代替
android:layout_height="280dp"
试试这从你的RelativeLayout
中删除静态高度
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="visible">
<com.example.user33.workingtestapp.ProportionalImageView
android:id="@+id/imgImageUrl"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:src="@drawable/disha" />
<View
android:layout_width="match_parent"
android:layout_height="2dp"
android:layout_below="@+id/imgImageUrl"
android:background="@color/colorAccent" />
<TextView
android:id="@+id/tvTitle"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imgImageUrl"
android:text="Lorem Ipsum"
android:textColor="#ff00"
android:textSize="22sp" />
<TextView
android:id="@+id/tvDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/tvTitle"
android:layout_margin="0dp"
android:text="00/00/0000"
android:textSize="12sp" />
<TextView
android:id="@+id/tvContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/tvDate"
android:text="Lorem ipsum dolor sit amet"
android:textSize="13sp" />
</RelativeLayout>
OUTPUT
没有静态高度
静态高度
以上是关于自定义ImageView类与屏幕中的其他元素重叠的主要内容,如果未能解决你的问题,请参考以下文章