Android "Add a vertical line" on "RelativeLayout" / "Linear Layout"

20,441

You should complete the LinearLayout after you use View.

I used the following code in my XML file, and it worked.

It should work for you as well.

<LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="1dp"
     android:paddingLeft="5dip"
     android:paddingRight="5dip">
<View 
    android:id="@+id/view"
    android:layout_toRightOf="@+id/text1"
    android:layout_width="1dip"
    android:layout_height="fill_parent"
    android:background="#FF0000FF"/>
 </LinearLayout>
Share:
20,441
Chong Yue
Author by

Chong Yue

I am a graduate student in Computer Science at Fordham Univ in New York. I am using c++ for most of time, and a bit Java(just finished a simple Android app last year), and I'm studying Ruby on Rails for one of my courses.

Updated on July 09, 2022

Comments

  • Chong Yue
    Chong Yue almost 2 years

    I have read other questions about adding a vertical line in Android, here's my questions

    1. I was able to add a vertical line as a "View" under my main RelativeLayout, but fails to do it within sub RelativeLayout.

    code for a vertical line

    <View
    android:id="@+id/verticalSeperatorHours"
    android:layout_width="1dip"
    android:layout_height="match_parent"
    android:background="@color/medium_dark_gray" 
    />
    

    code for a horizontal line:

    <LinearLayout
                android:id="@+id/currentTimeMarkerLinearLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="0dp"
                android:layout_marginTop="100dp"
                android:baselineAligned="false"
                android:orientation="horizontal"
                android:padding="0dp" >
    
                <View
                    android:layout_width="0dp"
                    android:layout_height="3dp"
                    android:layout_weight="1" />
    
                <View
                    android:id="@+id/currentTimeLineView"
                    android:layout_width="0dp"
                    android:layout_height="1dp"
                    android:layout_weight="14"
                    android:background="@color/strong_blue" />
            </LinearLayout>
    

    My structure xml:

    • RelativeLayout
      • LinearLayout
      • ScrollView
        • RelativeLayout
          • RelativeLayout
          • "Adding a vertical line doesn't work"
          • "Adding a horizontal line works"
    • LinearLayout
    • Adding a vertical line here works but not what I want"

    The "View" after the LinearLayout of horizontal line didn't appear. I realized that I didn't understand the structure of android layout in deep, so can someone explain it to me how it works.

    Complete Layout:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:arm="http://schemas.android.com/apk/res/edu.cmu.sv.arm"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="0dp" >
    
    <LinearLayout ...
    
    
    <View
        android:id="@+id/dividerView"
        android:layout_width="fill_parent"
        android:layout_height="1dp"
        android:layout_below="@+id/dayLabelsLinearLayout"
        android:background="@color/medium_gray" />
    
    <ScrollView
        android:id="@+id/calendarScrollView"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/dividerView"
        android:layout_alignParentBottom="true"
        android:overScrollMode="never"
        android:padding="0dp"
        android:scrollbars="none"
        android:fadingEdge="none" >
    
        <RelativeLayout
            android:id="@+id/calendarRelativeLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="0dp" >
    
            <LinearLayout ...
    
    
            <LinearLayout
                android:id="@+id/currentTimeMarkerLinearLayout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="0dp"
                android:layout_marginTop="100dp"
                android:baselineAligned="false"
                android:orientation="horizontal"
                android:padding="0dp" >
    
                <View
                    android:layout_width="0dp"
                    android:layout_height="3dp"
                    android:layout_weight="1" />
    
                <View
                    android:id="@+id/currentTimeLineView"
                    android:layout_width="0dp"
                    android:layout_height="1dp"
                    android:layout_weight="14"
                    android:background="@color/strong_blue" />
            </LinearLayout>
            <View
                    android:id="@+id/verticalSeperatorHours"
                    android:layout_width="1dip"
                    android:layout_height="match_parent"
                    android:layout_marginLeft="100dp"
                    android:background="@color/medium_dark_gray" />
        </RelativeLayout>
    </ScrollView>
    
    
    
    <LinearLayout ...
    
    <View ...
    
    </RelativeLayout>
    
  • Chong Yue
    Chong Yue over 10 years
    Thanks for your reply. But that's not exactly what I was asking. My horizontal line works as yours, but on the other hand, the similar code doesn't work for vertical lines.
  • Dushyant Patel
    Dushyant Patel over 10 years
    I have updated my answer, try again. It should work, I just implemented this in my layout. @ChongYue
  • Amitsharma
    Amitsharma over 8 years
    this is very simple code just give height and width