Search code examples
androidandroid-relativelayout

View not visible in device but visible in XML


I am trying to build a layout with a right arrow and a vertical line with 2 textviews to right of it.

This layout will be used in a RecyclerView

This is the code that I am using,

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:clickable="true"
    android:id="@+id/rootLayout"

    >
    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/white"            
        android:layout_margin="@dimen/app_margin"
        card_view:cardCornerRadius="4dp"
        card_view:cardElevation="4dp"
        >

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="5dp"
            >

            <View
                android:layout_width="20dp"
                android:layout_height="match_parent"
                android:layout_alignParentStart="true"
                android:id="@+id/lineView"
                android:layout_marginLeft="15dp"
                android:background="@color/colorPrimary"
                />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/name"
                android:layout_toRightOf="@+id/lineView"


                />
            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/type"
                android:layout_toRightOf="@+id/lineView"
                android:layout_below="@+id/name"

                />


            <android.support.v7.widget.AppCompatImageView
                android:layout_width="50dp"
                android:layout_height="50dp"
                app:srcCompat="@drawable/right_arrow"
                android:layout_alignParentEnd="true"
                android:layout_centerInParent="true"

                android:id="@+id/right_arrow"
                />

        </RelativeLayout>

        </android.support.v7.widget.CardView>


</LinearLayout>

This is the result of the above layout

enter image description here

The blue line is not visible when I run the output on my device but is visible in XML as shown

My Questions

  1. How do I make it visible in my device ?
  2. The blue line is very big I tried wrap_content but still did not work

Solution

  • You can simply align your lineView upto the height of text views. otherwise it will grow upto the device height. Refer this sample.

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="10dp"
        app:cardBackgroundColor="#FFFFFF"
        app:contentPadding="10dp">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center_vertical">
    
            <View
                android:id="@+id/view"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_alignBottom="@+id/linearLayout"
                android:layout_alignParentTop="true"
                android:background="@color/colorPrimary" />
    
            <LinearLayout
                android:id="@+id/linearLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerVertical="true"
                android:layout_toEndOf="@+id/view"
                android:orientation="vertical"
                android:padding="10dp">
    
                <TextView
                    android:id="@+id/name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="ABCD"
                    android:textSize="15sp" />
    
                <TextView
                    android:id="@+id/value"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="ABCD"
                    android:textSize="15sp" />
            </LinearLayout>
    
            <ImageView
                android:id="@+id/img"
                android:layout_width="50dp"
                android:layout_height="50dp"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                app:srcCompat="@drawable/ic_keyboard_arrow_right_black_24px" />
        </RelativeLayout>
    </android.support.v7.widget.CardView>
    

    Screenshot of above example: enter image description here