Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 匹配父级内部包装内容不匹配';我不能在api 18上工作_Android_Xml_Android Layout_Parent Child_Android Relativelayout - Fatal编程技术网

Android 匹配父级内部包装内容不匹配';我不能在api 18上工作

Android 匹配父级内部包装内容不匹配';我不能在api 18上工作,android,xml,android-layout,parent-child,android-relativelayout,Android,Xml,Android Layout,Parent Child,Android Relativelayout,我有一个RelativeLayout,它不占据整个屏幕,拥有两个子视图。两个孩子都是线性布局,第二个孩子的身高取决于第一个孩子 <TextView android:id="@+id/lastTime" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBo

我有一个RelativeLayout,它不占据整个屏幕,拥有两个子视图。两个孩子都是线性布局,第二个孩子的身高取决于第一个孩子

        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- images -->
    <ImageView
        android:id="@+id/hide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/childTWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_hide"/>

    <ImageView
        android:id="@+id/profile"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/hide"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_profile"/>

    <ImageView
        android:id="@+id/browser"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/profile"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_browser"/>
</RelativeLayout>
我遵循了这一点,并对其进行了修改以生成以下XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/parentWrapper"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#232323"
            android:orientation="horizontal">
    <!-- 1st child -->
    <LinearLayout
        android:id="@+id/childTWrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/iconWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- 2nd child; matches height of first child -->
    <LinearLayout
        android:id="@+id/iconWrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_centerVertical="true"
        android:orientation="horizontal"
        android:paddingRight="18dp">
        <!-- images -->
        <ImageView
            android:id="@+id/hide"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="?attr/selectableItemBackground"
            android:clickable="true"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:src="@drawable/ic_hide"/>

        <ImageView
            android:id="@+id/profile"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="?attr/selectableItemBackground"
            android:clickable="true"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:src="@drawable/ic_profile"/>

        <ImageView
            android:id="@+id/browser"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="?attr/selectableItemBackground"
            android:clickable="true"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:src="@drawable/ic_browser"/>
    </LinearLayout>
</RelativeLayout>
        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- images -->
    <ImageView
        android:id="@+id/hide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/childTWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_hide"/>

    <ImageView
        android:id="@+id/profile"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/hide"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_profile"/>

    <ImageView
        android:id="@+id/browser"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/profile"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_browser"/>
</RelativeLayout>

现在,问题是我希望第二线性布局的子对象(ImageView)与其父对象的高度相匹配。这将导致
match_parent
视图嵌套在
wrap_content
视图中。即使我将LinearLayout的高度更改为
match\u parent
,它最终仍然位于高度
wrap\u content
的RelativeLayout内

        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- images -->
    <ImageView
        android:id="@+id/hide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/childTWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_hide"/>

    <ImageView
        android:id="@+id/profile"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/hide"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_profile"/>

    <ImageView
        android:id="@+id/browser"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/profile"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_browser"/>
</RelativeLayout>
在API>18的情况下,这可以正常工作:

        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- images -->
    <ImageView
        android:id="@+id/hide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/childTWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_hide"/>

    <ImageView
        android:id="@+id/profile"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/hide"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_profile"/>

    <ImageView
        android:id="@+id/browser"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/profile"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_browser"/>
</RelativeLayout>

在API上,将布局的高度设置为与父级匹配,将宽度设置为包裹内容并设置android:layout\u gravity=“center\u vertical”android:gravity=“center\u vertical”

我还没有测试过这一点,但我注意到一些可能导致问题的东西。。尝试这些更改,看看它是如何工作的。我添加了一些注释,试图解释我的更改

<?xml version="1.0" encoding="utf-8"?>
<!-- Relative layout doesn't use the orientation attribute so I nixed that -->
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/parentWrapper"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#232323">
    <!-- 1st child -->
    <LinearLayout
        android:id="@+id/childTWrapper"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/iconWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:orientation="vertical">

        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- 2nd child; matches height of first child -->
    <!-- Set the top AND bottom of this linear layout to be aligned with the first child, rather than aligning it to the top of the parent.  You also probably don't want the centerVertical attribute because that centers the LinearLayout and not it's children. --> 
    <LinearLayout
        android:id="@+id/iconWrapper"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_alignParentRight="true"
        android:orientation="horizontal"
        android:paddingRight="18dp">
        <!-- images -->
        <ImageView
            android:id="@+id/hide"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="?attr/selectableItemBackground"
            android:clickable="true"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:src="@drawable/ic_hide"/>

        <ImageView
            android:id="@+id/profile"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="?attr/selectableItemBackground"
            android:clickable="true"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:src="@drawable/ic_profile"/>

        <ImageView
            android:id="@+id/browser"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:background="?attr/selectableItemBackground"
            android:clickable="true"
            android:paddingLeft="12dp"
            android:paddingRight="12dp"
            android:src="@drawable/ic_browser"/>
    </LinearLayout>
</RelativeLayout>
        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- images -->
    <ImageView
        android:id="@+id/hide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/childTWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_hide"/>

    <ImageView
        android:id="@+id/profile"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/hide"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_profile"/>

    <ImageView
        android:id="@+id/browser"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/profile"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_browser"/>
</RelativeLayout>

如果这不起作用,或者如果要删除不必要的第二个LinearLayout,可以将每个ImageView元素与第一个子元素对齐。。。看起来是这样的:

        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- images -->
    <ImageView
        android:id="@+id/hide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/childTWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_hide"/>

    <ImageView
        android:id="@+id/profile"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/hide"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_profile"/>

    <ImageView
        android:id="@+id/browser"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/profile"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_browser"/>
</RelativeLayout>


您还可以进一步删除另一个LinearLayout,但我将把它作为一个练习留给任何想尝试的人:-)

,因为“在包装内容中匹配父项”根本没有意义。(您有循环引用)@Selvin是的,但是如何填充非全屏视图的高度呢?如果您将第一个LinearLayout的高度设置为与父级匹配,元素将占据整个屏幕,我不希望这样。父级的布局高度设置为“包裹内容”。
        <TextView
            android:id="@+id/lastTime"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="2dp"
            android:paddingLeft="30dp"
            android:paddingTop="15dp"
            android:textColor="@android:color/white"
            android:textStyle="bold"/>

        <TextView
            android:id="@+id/lastAuthor"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="15dp"
            android:paddingLeft="30dp"
            android:textColor="@android:color/white"/>
    </LinearLayout>

    <!-- images -->
    <ImageView
        android:id="@+id/hide"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/childTWrapper"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_hide"/>

    <ImageView
        android:id="@+id/profile"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/hide"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_profile"/>

    <ImageView
        android:id="@+id/browser"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_alignBottom="@+id/childTWrapper"
        android:layout_alignTop="@+id/childTWrapper"
        android:layout_toRightOf="@id/profile"
        android:background="?attr/selectableItemBackground"
        android:clickable="true"
        android:paddingLeft="12dp"
        android:paddingRight="12dp"
        android:src="@drawable/ic_browser"/>
</RelativeLayout>