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 不在设备中查看,但在设计预览中显示的主要内容,如果未能解决你的问题,请参考以下文章

ImageView在布局中显示但不在实际设备上显示

ImageView 在相机表面视图后面移动

android设备重启时ImageView不保留图像

NSKeyedArchiver 在模拟器中工作,但不在设备中,iOS SDK

Android - ImageView 方向因设备而异

如何制作故事预览(ImageView、标签或其他内容),如 instagram、facebook 或 Airbnb?