相对布局和视图消失

时间:2018-10-17 19:32:18

标签: android

我的布局如下:

enter image description here

您可以在此处看到小游戏图标。我想要的是,如果让该小游戏图标具有可见性,则视图应如下所示:

enter image description here

但是我目前的状态(如果我想知道可见度)转到小游戏图标:

enter image description here

我的xml:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="76dp"
    android:layout_alignParentStart="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/conversation_list_border">

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/image"
        android:layout_width="62dp"
        android:layout_height="62dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="6dp"
        android:src="@drawable/default_color_1" />


    <TextView
        android:id="@+id/nameText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/image"
        android:text="Tolgay Toklar"
        android:textColor="#727272"
        android:textSize="13sp"
        android:textStyle="bold" />

    <RelativeLayout
        android:id="@+id/unreadMessageBg"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_alignParentRight="true"
        android:layout_marginTop="30dp"
        android:layout_marginRight="22dp"
        android:background="@drawable/konusmalar_chat_count_bg">

        <TextView
            android:id="@+id/unreadMessageCount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:fontFamily="sans-serif"
            android:text="5"
            android:textColor="@color/white"
            android:textSize="12sp"
            android:textStyle="bold" />

    </RelativeLayout>

    <TextView
        android:id="@+id/bioText"
        android:layout_width="199dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/nameText"
        android:layout_marginStart="2dp"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="5dp"
        android:layout_toStartOf="@+id/imageView7"
        android:layout_toLeftOf="@+id/imageView7"
        android:layout_toEndOf="@+id/imageView22"
        android:layout_toRightOf="@+id/imageView22"
        android:maxLines="1"
        android:text="Selam Nasılsın?Selam Nasılsın?Selam Nasılsın?Selam Nasılsın?"
        android:textColor="#7A7A7A"
        android:textSize="15sp"
        android:textStyle="normal" />

    <ImageView
        android:id="@+id/imageView22"
        android:layout_width="18dp"
        android:layout_height="18dp"
        android:layout_below="@+id/nameText"
        android:layout_alignStart="@+id/nameText"
        android:layout_alignLeft="@+id/nameText"
        android:layout_marginStart="0dp"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="6dp"
        android:layout_marginRight="3dp"
        app:srcCompat="@drawable/send_voice_record" />

</RelativeLayout>

我该如何解决此问题?

3 个答案:

答案 0 :(得分:0)

将imageView22(我想这是播放的imageview)和bioText放在相对的布局内,例如:

<RelativeLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/nameText"
    android:layout_alignStart="@+id/nameText"
    android:layout_alignLeft="@+id/nameText">

    <ImageView
        android:id="@+id/imageView22"
        android:layout_width="18dp"
        android:layout_height="18dp"
        android:layout_marginStart="0dp"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="6dp"
        android:layout_marginRight="3dp"
        app:srcCompat="@drawable/send_voice_record" />

    <TextView
        android:id="@+id/bioText"
        android:layout_width="199dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="2dp"
        android:layout_marginLeft="0dp"
        android:layout_marginTop="5dp"
        android:layout_toEndOf="@+id/imageView22"
        android:layout_toRightOf="@+id/imageView22"
        android:maxLines="1"
        android:text="Selam Nasılsın?Selam Nasılsın?Selam Nasılsın?Selam Nasılsın?"
        android:textColor="#7A7A7A"
        android:textSize="15sp"
        android:textStyle="normal" />

</RelativeLayout>

使图像视图不可见时,TextView将占据imagview之前的空间。当然,您必须修复其他属性。

答案 1 :(得分:0)

使用ConstraintLayout代替RelativeLayout。 ConstraintLayout基本上是RelativeLayout的更新更好的版本,因此转换应该不会太差。对您来说幸运的是,当视图在ConstraintLayout中为GONE时,任何受其约束的视图的行为就好像目标视图仍然存在,大小仅为0。

这是您使用ConstraintLayout的布局。我已经删除了ID和约束以外的所有属性,以使您更加清楚地知道需要使用哪些约束。

<androidx.constraintlayout.widget.ConstraintLayout>

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/image"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"/>

    <TextView
        android:id="@+id/nameText"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toEndOf="@+id/image"/>

    <RelativeLayout
        android:id="@+id/unreadMessageBg"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent">

        <TextView ... />

    </RelativeLayout>

    <TextView
        android:id="@+id/bioText"
        app:layout_constraintTop_toBottomOf="@+id/nameText"
        app:layout_constraintStart_toEndOf="@+id/imageView22"/>

    <ImageView
        android:id="@+id/imageView22"
        app:layout_constraintTop_toBottomOf="@+id/nameText"
        app:layout_constraintStart_toStartOf="@+id/nameText"/>

</androidx.constraintlayout.widget.ConstraintLayout>

请注意,如果您不使用androidx,但仍在使用旧的支持库,则标签将改为:

<android.support.constraint.ConstraintLayout>

答案 2 :(得分:0)

imageView22bioText放入另一个布局。关键是将android:layout_alignWithParentIfMissing="true"设置为bioText。 试试这个:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="76dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:background="@drawable/conversation_list_border">

    <de.hdodenhof.circleimageview.CircleImageView xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/image"
        android:layout_width="62dp"
        android:layout_height="62dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="6dp"
        android:src="@drawable/default_color_1" />


    <TextView
        android:id="@+id/nameText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="10dp"
        android:layout_toRightOf="@+id/image"
        android:text="Tolgay Toklar"
        android:textColor="#727272"
        android:textSize="13sp"
        android:textStyle="bold" />

    <RelativeLayout
        android:id="@+id/unreadMessageBg"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="22dp"
        android:layout_marginTop="30dp"
        android:background="@drawable/konusmalar_chat_count_bg">

        <TextView
            android:id="@+id/unreadMessageCount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_centerVertical="true"
            android:fontFamily="sans-serif"
            android:text="5"
            android:textColor="@color/white"
            android:textSize="12sp"
            android:textStyle="bold" />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/nameText"
        android:layout_toEndOf="@id/image"
        android:layout_toRightOf="@id/image">

        <TextView
            android:id="@+id/bioText"
            android:layout_width="199dp"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="0dp"
            android:layout_marginStart="2dp"
            android:layout_marginTop="5dp"
            android:layout_toEndOf="@id/imageView22"
            android:layout_toRightOf="@id/imageView22"
            android:maxLines="1"
            android:layout_alignWithParentIfMissing="true"
            android:text="Selam Nasılsın?Selam Nasılsın?Selam Nasılsın?Selam Nasılsın?"
            android:textColor="#7A7A7A"
            android:textSize="15sp"
            android:textStyle="normal" />

        <ImageView
            android:id="@+id/imageView22"
            android:layout_width="18dp"
            android:layout_height="18dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_centerVertical="true"
            android:layout_marginLeft="0dp"
            android:layout_marginRight="3dp"
            android:layout_marginStart="0dp"
            android:layout_marginTop="6dp"
            app:srcCompat="@drawable/send_voice_record" />

    </RelativeLayout>

</RelativeLayout>