嵌套的Vertical LinearLayout后,Horizo​​ntal LinearLayout不显示任何元素

时间:2018-07-09 14:26:03

标签: android xml android-layout android-linearlayout

在针对初学者的Udacity Android课程之后,我想向list_item视图添加音频图标按钮。现在list_item.xml具有父级水平线性布局和嵌套的垂直线性布局。课程讲师通过更改为“相对布局”添加了音频图标,但我想看看如何使用“线性布局”来做到这一点。

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="@color/tan_background"
              android:minHeight="@dimen/list_item_height"
              android:orientation="horizontal">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="@dimen/list_item_height"
        android:layout_height="@dimen/list_item_height"/>


    <LinearLayout
        android:id="@+id/text_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingLeft="16dp">


        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="bottom"
            android:textAppearance="?android:textAppearanceMedium"
            android:textColor="@android:color/white"
            android:textStyle="bold"
            tools:text=""/>


        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="top"
            android:textColor="@android:color/white"
            tools:text=""/>

    </LinearLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/baseline_play_arrow_white_24"/>


</LinearLayout>

我现在的问题是,当我在嵌套的“垂直线性布局”之后添加任何元素时,什么都不会显示。我正在尝试不同的方法,但我听不懂。我能想到的就是原因:

android:layout_width:"match_parent"

请让我知道如何在保持线性布局的同时在右侧和中间添加音频图标。

这是我想要实现的输出

enter image description here

2 个答案:

答案 0 :(得分:1)

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="@color/apptool"
    android:orientation="horizontal">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_marginRight="10dp"
        android:layout_marginLeft="10dp"
        android:orientation="horizontal">


    <ImageView
        android:id="@+id/imageView"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:src="@android:drawable/btn_star"
        android:tint="@color/black"
        android:background="#ebed54"
        android:layout_weight=".1"/>


    <LinearLayout
        android:id="@+id/text_container"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@color/colorPrimary"
        android:layout_weight=".3"
        android:paddingLeft="16dp">


        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="bottom"
            android:textAppearance="?android:textAppearanceMedium"
            android:textColor="@android:color/white"
            android:textStyle="bold"
            tools:text="sdfdsfdsf"/>


        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="top"
            android:textColor="@android:color/white"
            tools:text="sdfdsfdsf"/>

    </LinearLayout>

    <ImageView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight=".1"
        android:background="@color/colorPrimary"
        android:src="@android:drawable/ic_media_play"/>
    </LinearLayout>

</LinearLayout>

输出

enter image description here

答案 1 :(得分:0)

您将线性布局的宽度设置为match_parent,这样它将占用所有剩余的空间,因此您需要先将match_parent更改为wrap_content,如下所示:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              xmlns:tools="http://schemas.android.com/tools"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:background="@color/tan_background"
              android:minHeight="@dimen/list_item_height"
              android:orientation="horizontal">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="@dimen/list_item_height"
        android:layout_height="@dimen/list_item_height"/>


    <LinearLayout
        android:id="@+id/text_container"
        android:layout_width="wrap_conten"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingLeft="16dp">


        <TextView
            android:id="@+id/textView1"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="bottom"
            android:textAppearance="?android:textAppearanceMedium"
            android:textColor="@android:color/white"
            android:textStyle="bold"
            tools:text=""/>


        <TextView
            android:id="@+id/textView2"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="top"
            android:textColor="@android:color/white"
            tools:text=""/>

    </LinearLayout>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/baseline_play_arrow_white_24"/>


</LinearLayout>