ImageView 不在设备中查看,但在设计预览中显示
Posted
技术标签:
【中文标题】ImageView 不在设备中查看,但在设计预览中显示【英文标题】:ImageView not viewing in device, but in Design preview it is shown 【发布时间】:2019-11-06 08:43:04 【问题描述】:我在RecyclerView
中显示一些项目。在每个项目的布局中,我希望出现一个竖线。我在项目布局中创建了一个ImageView
。在设计预览选项卡中可以看到,但在设备中看不到。
我见过this 的问题,与我的类似,但其中任何一个都有效。
这是布局(测试设备是三星):
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainrl">
<ImageView
android:layout_
android:layout_
android:background="@color/backcolor"
android:layout_marginStart="50dp"
android:id="@+id/verticalbar"/>
<android.support.v7.widget.CardView
android:layout_
android:layout_
android:id="@+id/daycv"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
card_view:cardCornerRadius="30dp"
card_view:cardPreventCornerOverlap="false"
card_view:cardBackgroundColor="@color/backcolor">
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:layout_
android:layout_
android:id="@+id/day"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:textColor="@color/white"
android:textSize="17sp"/>
<ImageView
android:layout_
android:layout_
android:layout_below="@+id/day"
android:background="@color/white"
android:id="@+id/separador"
android:layout_marginStart="3dp"
android:layout_marginEnd="3dp"
android:layout_centerVertical="true"/>
<TextView
android:layout_
android:layout_
android:id="@+id/month"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:layout_below="@+id/separador"
android:textColor="@color/white"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
<android.support.v7.widget.CardView
android:layout_
android:layout_
android:background="@color/colorPrimary"
android:layout_toEndOf="@+id/daycv"
android:layout_alignTop="@+id/daycv"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:id="@+id/contentcv">
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/rl">
<ImageView
android:layout_
android:layout_
android:id="@+id/image"/>
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:alpha="150"
android:background="@color/gris">
<TextView
android:layout_
android:layout_
android:id="@+id/origen"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"/>
<ImageView
android:layout_
android:layout_
android:id="@+id/flecha"
android:layout_toEndOf="@+id/origen"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:background="@android:drawable/ic_media_ff"/>
<TextView
android:layout_
android:layout_
android:id="@+id/destino"
android:layout_toEndOf="@+id/flecha"
android:layout_marginStart="10dp"
android:layout_centerVertical="true"/>
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:alpha="150"
android:background="@color/gris">
<ImageView
android:layout_
android:layout_
android:layout_centerVertical="true"
android:id="@+id/voidimage"/>
<TextView
android:layout_
android:layout_
android:id="@+id/fechasalida"
android:layout_above="@+id/voidimage"
android:layout_alignParentStart="true"
android:layout_marginStart="10dp"/>
<TextView
android:layout_
android:layout_
android:id="@+id/fechallegada"
android:layout_alignStart="@+id/fechasalida"
android:layout_below="@+id/voidimage"
android:layout_marginBottom="10dp"/>
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
为什么我的 ImageView 在设备中看不到?
谢谢。
编辑:
图片:
编辑 2:
我已将布局更改为:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainrl">
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/cvrl">
<!--<android.support.v7.widget.CardView
android:layout_
android:layout_
android:id="@+id/daycv"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
card_view:cardCornerRadius="30dp"
card_view:cardPreventCornerOverlap="false"
card_view:cardBackgroundColor="@color/backcolor">-->
<android.support.v7.widget.CardView
android:layout_
android:layout_
android:id="@+id/daycv"
android:layout_centerHorizontal="true"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
card_view:cardCornerRadius="30dp"
card_view:cardPreventCornerOverlap="false"
card_view:cardBackgroundColor="@color/backcolor">
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:layout_
android:layout_
android:id="@+id/day"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:textColor="@color/white"
android:textSize="17sp"/>
<ImageView
android:layout_
android:layout_
android:layout_below="@+id/day"
android:background="@color/white"
android:id="@+id/separador"
android:layout_marginStart="3dp"
android:layout_marginEnd="3dp"
android:layout_centerVertical="true"/>
<TextView
android:layout_
android:layout_
android:id="@+id/month"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:layout_below="@+id/separador"
android:textColor="@color/white"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
<ImageView
android:layout_
android:layout_ <---- Changing this affects how the vertical line sees.
android:src="@color/backcolor"
android:layout_marginStart="40dp"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:id="@+id/verticalbar"/>
</RelativeLayout>
<android.support.v7.widget.CardView
android:layout_
android:layout_
android:background="@color/colorPrimary"
android:layout_toEndOf="@+id/cvrl"
android:layout_alignTop="@+id/cvrl"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp"
android:id="@+id/contentcv">
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/rl">
<ImageView
android:layout_
android:layout_
android:id="@+id/image"/>
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:alpha="150"
android:background="@color/gris">
<TextView
android:layout_
android:layout_
android:id="@+id/origen"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"/>
<ImageView
android:layout_
android:layout_
android:id="@+id/flecha"
android:layout_toEndOf="@+id/origen"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:background="@android:drawable/ic_media_ff"/>
<TextView
android:layout_
android:layout_
android:id="@+id/destino"
android:layout_toEndOf="@+id/flecha"
android:layout_marginStart="10dp"
android:layout_centerVertical="true"/>
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:alpha="150"
android:background="@color/gris">
<ImageView
android:layout_
android:layout_
android:layout_centerVertical="true"
android:id="@+id/voidimage"/>
<TextView
android:layout_
android:layout_
android:id="@+id/fechasalida"
android:layout_above="@+id/voidimage"
android:layout_alignParentStart="true"
android:layout_marginStart="10dp"/>
<TextView
android:layout_
android:layout_
android:id="@+id/fechallegada"
android:layout_alignStart="@+id/fechasalida"
android:layout_below="@+id/voidimage"
android:layout_marginBottom="10dp"/>
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
如果我输入 height: match_parent,则只能看到一行的一小部分。但是,如果我设置为随机数(例如 300dp),则会显示该行...
【问题讨论】:
你能添加你接受的或当前的视图图片 当您将ImageView
作为第一级RelativeLayout
中的最后一个子级时会发生什么?
它都没有显示
【参考方案1】:
看来您使用 ImageView 不正确,我看到您正在尝试使用 android:background
道具设置源,但设置资源的正确方法是使用道具 android:src
,
例如
<ImageView
android:layout_
android:layout_
android:id="@+id/flecha"
android:layout_toEndOf="@+id/origen"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:src="@mipmap/ic_media_ff"/>
【讨论】:
您能否添加您在设备上和预览中看到的屏幕截图? AS的Design选项卡中的预览在问题中。在设备中,显示方式相同...除了垂直线。【参考方案2】:在挣扎了一段时间之后,并且不知道它之前为什么不工作,我设法通过这种方式让它工作:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainrl">
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/cvrl"
android:layout_alignBottom="@+id/rl2"
android:layout_alignParentTop="true">
<android.support.v7.widget.CardView
android:layout_
android:layout_
android:id="@+id/daycv"
android:layout_centerHorizontal="true"
android:layout_marginStart="20dp"
android:layout_marginTop="10dp"
card_view:cardCornerRadius="30dp"
card_view:cardPreventCornerOverlap="false"
card_view:cardBackgroundColor="@color/backcolor">
<RelativeLayout
android:layout_
android:layout_>
<TextView
android:layout_
android:layout_
android:id="@+id/day"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:textColor="@color/white"
android:textSize="17sp"/>
<ImageView
android:layout_
android:layout_
android:layout_below="@+id/day"
android:background="@color/white"
android:id="@+id/separador"
android:layout_marginStart="3dp"
android:layout_marginEnd="3dp"
android:layout_centerVertical="true"/>
<TextView
android:layout_
android:layout_
android:id="@+id/month"
android:layout_centerHorizontal="true"
android:layout_marginTop="5dp"
android:layout_below="@+id/separador"
android:textColor="@color/white"/>
</RelativeLayout>
</android.support.v7.widget.CardView>
<ImageView
android:layout_
android:layout_
android:src="@color/backcolor"
android:layout_marginStart="40dp"
android:id="@+id/verticalbar"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"/>
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/rl2"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@id/cvrl"
android:layout_marginEnd="10dp"
android:layout_marginStart="10dp">
<android.support.v7.widget.CardView
android:layout_
android:layout_
android:background="@color/colorPrimary"
android:id="@+id/contentcv">
<RelativeLayout
android:layout_
android:layout_
android:id="@+id/rl">
<ImageView
android:layout_
android:layout_
android:id="@+id/image"/>
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentTop="true"
android:alpha="150"
android:background="@color/gris">
<TextView
android:layout_
android:layout_
android:id="@+id/origen"
android:layout_alignParentStart="true"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"/>
<ImageView
android:layout_
android:layout_
android:id="@+id/flecha"
android:layout_toEndOf="@+id/origen"
android:layout_centerVertical="true"
android:layout_marginStart="10dp"
android:background="@android:drawable/ic_media_ff"/>
<TextView
android:layout_
android:layout_
android:id="@+id/destino"
android:layout_toEndOf="@+id/flecha"
android:layout_marginStart="10dp"
android:layout_centerVertical="true"/>
</RelativeLayout>
<RelativeLayout
android:layout_
android:layout_
android:layout_alignParentBottom="true"
android:alpha="150"
android:background="@color/gris">
<ImageView
android:layout_
android:layout_
android:layout_centerVertical="true"
android:id="@+id/voidimage"/>
<TextView
android:layout_
android:layout_
android:id="@+id/fechasalida"
android:layout_above="@+id/voidimage"
android:layout_alignParentStart="true"
android:layout_marginStart="10dp"/>
<TextView
android:layout_
android:layout_
android:id="@+id/fechallegada"
android:layout_alignStart="@+id/fechasalida"
android:layout_below="@+id/voidimage"
android:layout_marginBottom="10dp"/>
</RelativeLayout>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
</RelativeLayout>
【讨论】:
【参考方案3】:你妈妈的Relativelayout高度是wrap_content
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/mainrl">
改成
android:layout_
如果你只想显示一条垂直线,请使用带背景的 View 而不是 ImageView
【讨论】:
这会导致 RecyclerView 中的每个项目占据整个屏幕,我不希望这样。无论如何,我解决了这个问题。谢谢。以上是关于ImageView 不在设备中查看,但在设计预览中显示的主要内容,如果未能解决你的问题,请参考以下文章