为什么我的线性布局不匹配listview中的父高?

时间:2013-12-20 04:06:41

标签: java android android-layout

我有以下代码

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/itemLayoutView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/list_view_layout_margin"
    android:paddingRight="@dimen/list_view_layout_margin" 
    android:background="@color/yellow">

    <LinearLayout
        android:id="@+id/itemLinearLayoutView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/gameNameView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/game_list_text_size" />

        <TextView
            android:id="@+id/gameCreationDateView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/gray"
            android:textSize="@dimen/small_text_size"
            android:textStyle="italic" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/LinearLayoutView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/red"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/infoButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/info" />

        <Button
            android:id="@+id/deleteButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/delete" />
    </LinearLayout>


</RelativeLayout>

具有id itemLinearLayoutView的LinearLayout是将所有内容包装在listview行中的主要布局。我遇到的问题是第二个线性布局子元素没有使用id itemLinearLayoutView获取父线性布局的高度。有解决方案吗或代码有问题?

5 个答案:

答案 0 :(得分:2)

只需更改布局高度以匹配父级。问题将得到解决。

  <LinearLayout
    android:id="@+id/itemLinearLayoutView"
    android:layout_width="match_parent"
  // use match_parent instead of wrap_content 
    android:layout_height="match_parent"
    android:orientation="vertical" >

答案 1 :(得分:2)

你的问题在于:

android:layout_height="wrap_content"

这需要在LinearLayout中更改为“match_parent”,您希望将其作为父级的大小。另外,你说

the second linear layout child does not take the height of the parent linear layout

这两种布局不是父母和子女。父级是您的RelativeLayout,两个LinearLayout都是RelativeLayout的等效子级。也许这可以帮助您调试遇到的任何其他问题。

答案 2 :(得分:1)

布局需要嵌套在第一个线性布局中以获取它的参数,并且需要更改布局高度的值。代码如下。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/itemLayoutView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/list_view_layout_margin"
android:paddingRight="@dimen/list_view_layout_margin" 
android:background="@color/yellow">

<LinearLayout
    android:id="@+id/itemLinearLayoutView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/gameNameView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="@dimen/game_list_text_size" />

    <TextView
        android:id="@+id/gameCreationDateView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@color/gray"
        android:textSize="@dimen/small_text_size"
        android:textStyle="italic" />


<LinearLayout
    android:id="@+id/LinearLayoutView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/red"
    android:orientation="horizontal" >

    <Button
        android:id="@+id/infoButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/info" />

    <Button
        android:id="@+id/deleteButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/delete" />

</LinearLayout>

</LinearLayout>

答案 3 :(得分:0)

<LinearLayout
    android:id="@+id/itemLinearLayoutView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" <!-- you should use match_parent here -->
    android:orientation="vertical" >

答案 4 :(得分:0)

// try this way i have used LinearLayout as parent rather than RelativeLayout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/itemLayoutView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingLeft="@dimen/list_view_layout_margin"
    android:paddingRight="@dimen/list_view_layout_margin"
    android:background="@color/yellow">

    <LinearLayout
        android:id="@+id/itemLinearLayoutView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/gameNameView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="@dimen/game_list_text_size" />

        <TextView
            android:id="@+id/gameCreationDateView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/gray"
            android:textSize="@dimen/small_text_size"
            android:textStyle="italic" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/LinearLayoutView"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="right"
        android:background="@color/red"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/infoButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/info" />

        <Button
            android:id="@+id/deleteButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/delete" />
    </LinearLayout>
</LinearLayout>