1

So here is my code where I have to manually insert the height of the line which I do NOT want to do.. I want my other content size to determine the height of my listview item and I want my vertical line to simply fill top to bottom. Currently it only works when I set the dp manually - How can I do it with fill_parent ? When I try to use fill_parent, the line does not even show (ever).

parent of my listview items:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background_repeatable"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin_venue"
    android:paddingRight="@dimen/activity_horizontal_margin_venue"
    android:paddingTop="5dp"
    tools:context=".CategoriesActivity" >
    <ListView
        android:id="@+id/categoriesList"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:divider="@android:color/transparent"
        android:dividerHeight="@dimen/my_padding"
        android:drawSelectorOnTop="false"
        android:listSelector="@drawable/list_view_item_background_on_click"
        android:text="@color/White"
        android:textAlignment="center"
        android:visibility="visible" >
    </ListView>
</RelativeLayout>

actual listview element view:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/list_view_item_background"
    android:gravity="center_vertical"
    android:paddingBottom="3dp"
    android:paddingLeft="3.5dp"
    android:paddingRight="@dimen/listview_item_left_right_padding"
    android:paddingTop="3dp" >
    <View
        android:id="@+id/vertical_line"
        android:layout_width="3dip"
        android:layout_height="65dp" **I want this to be fill_parent**
        android:layout_alignParentLeft="true"
        android:layout_marginRight="5dp"
        android:background="@color/SkyBlue2" />
    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:paddingTop="@dimen/listview_item_top_bottom_padding"
        android:layout_toRightOf="@+id/vertical_line"
        android:textColor="@color/White"
        android:text="Bars and Grills"
        android:textSize="@dimen/titleTextSize"
        android:textStyle="bold"/>
    <TextView
        android:id="@+id/venue_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:paddingBottom="@dimen/listview_item_top_bottom_padding"
        android:layout_toRightOf="@+id/vertical_line"
        android:textColor="@color/White"
        android:text="20"
        android:paddingLeft="5dp"
        android:textSize="@dimen/subtitleTextSize"/>
    <TextView
        android:id="@+id/venue_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:layout_toRightOf="@+id/venue_count"
        android:paddingBottom="@dimen/listview_item_top_bottom_padding"
        android:textColor="@color/White"
        android:text="locations"
        android:paddingLeft="3dp"
        android:textSize="@dimen/subtitleTextSize"/>
    <ImageView
        android:id="@+id/clickIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:adjustViewBounds="true"
        android:src="@drawable/ic_action_next_item" />
</RelativeLayout>
iamreptar
  • 1,461
  • 16
  • 29
Georgi Angelov
  • 4,338
  • 12
  • 67
  • 96

3 Answers3

0

Try this:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/list_view_item_background"
    android:gravity="center_vertical"
    android:paddingBottom="3dp"
    android:paddingLeft="3.5dp"
    android:paddingRight="@dimen/listview_item_left_right_padding"
    android:paddingTop="3dp" >
    <View
        android:id="@+id/vertical_line"
        android:layout_width="3dip"
        android:layout_height="match_parent" 
        android:layout_alignParentLeft="true"
        android:layout_marginRight="5dp"
        android:background="@android:color/holo_orange_dark" />
    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:paddingTop="@dimen/listview_item_top_bottom_padding"
        android:layout_toRightOf="@+id/vertical_line"
        android:textColor="@color/White"
        android:text="Bars and Grills"
        android:textSize="@dimen/titleTextSize"
        android:textStyle="bold"/>
    <TextView
        android:id="@+id/venue_count"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:paddingBottom="@dimen/listview_item_top_bottom_padding"
        android:layout_toRightOf="@+id/vertical_line"
        android:textColor="@color/White"
        android:text="20"
        android:paddingLeft="5dp"
        android:textSize="@dimen/subtitleTextSize"/>
    <TextView
        android:id="@+id/venue_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/name"
        android:layout_toRightOf="@+id/venue_count"
        android:paddingBottom="@dimen/listview_item_top_bottom_padding"
        android:textColor="@color/White"
        android:text="locations"
        android:paddingLeft="3dp"
        android:textSize="@dimen/subtitleTextSize"/>
    <ImageView
        android:id="@+id/clickIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:adjustViewBounds="true"
        android:src="@drawable/ic_action_next_item" />
</RelativeLayout>

As you can see I make it fill_parent and change the color for to holo_orange_dark. And it work in my case.

Avijit
  • 3,834
  • 4
  • 33
  • 45
0
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    View view =(View) findViewById(R.id.vertical_line);
    View parent = (View) view.getParent();
     int height = parent.getHeight();
     int width = view.getWidth();
     view.setLayoutParams(new LayoutParams(width, height));


}
anand
  • 416
  • 2
  • 11
0

Its not perfect solution, but little bit of hack. use relativelayout, inside it put 1st view above your top position layout of list view row item, same way put another view below your last view of row item, and then draw vertical line below 1st view and above 2nd view with fill parent height and magically it works. Don't forget to use transparent color of those 2 top and bottom views.

Mihir Shah
  • 1,799
  • 3
  • 29
  • 49