Android:如何使用xml视图插入具有“fill_parent”高度的垂直线 - 仅使用固定大小

时间:2013-11-05 05:20:29

标签: android xml eclipse android-linearlayout relativelayout

所以这是我的代码,我必须手动插入我不想做的行的高度..我希望我的其他内容大小来确定我的listview项的高度,我希望我的垂直线简单从上到下填充。目前它只在我手动设置dp时才有效 - 我怎样才能用fill_parent做到这一点?当我尝试使用fill_parent时,该行甚至不会显示(永远)。

我的listview项目的父级:

<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>

实际的listview元素视图:

<?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>

3 个答案:

答案 0 :(得分:0)

试试这个:

<?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>

如您所见,我将其设为fill_parent并将颜色更改为holo_orange_dark。它适用于我的情况。

答案 1 :(得分: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));


}

答案 2 :(得分:0)

它不是完美的解决方案,但有点破解。使用relativelayout,将第一个视图放在列表视图行项目的顶部位置布局上方,同样将另一个视图放在行项目的最后一个视图下方,然后在第一个视图下方绘制垂直线,在第二个视图上方绘制填充父级高度并神奇地有用。不要忘记使用这两个顶视图和底视图的透明色。