使子视图比其父视图更宽

时间:2015-03-02 13:18:37

标签: android android-layout

我有一个RelativeLayout,里面有一个ImageView。 RelativeLayout是一个ListView行,它有一个填充集(该空间位于ListView的边缘和它的子RelativeLayout视图的边缘之间)。

我试图让RelativeLayout中的ImageView比使用负边距的行更宽。 设置负边距和禁用裁剪(一直向上)。 似乎没什么用。

代码示例(RelativeLayout在其边缘与屏幕边缘之间具有父级和空格):

<RelativeLayout
            android:layout_width="match_parent"
            android:clipChildren="false"
            android:clipToPadding="false"
            android:layout_height="match_parent">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="-10dp"
        android:layout_marginRight="-10dp" />
</RelativeLayout>

2 个答案:

答案 0 :(得分:3)

尝试这样的事情(代码来自我正在处理的项目):

<?xml version="1.0" encoding="utf-8"?>
<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="wrap_content"
    android:clipChildren="false">

    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        tools:ignore="UselessParent"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:background="@drawable/dialog_heading_top_line"
        android:clipChildren="false"
        android:orientation="horizontal"
        android:gravity="center_horizontal">

        <ImageView
            android:id="@+id/default_header_logo"
            android:layout_width="167dp"
            android:layout_height="72dp"
            android:scaleType="center"
            android:src="@drawable/default_header_logo"
            android:contentDescription="@string/default_heading_logo" />

    </LinearLayout>

</RelativeLayout>

看起来clip = false在RelativeLayout中并不能很好地工作,所以使用带子的LinearLayout - ImageView。

答案 1 :(得分:0)

对我来说,我起诉androidx.constraintlayout.widget.ConstraintLayout,并设置android:clipToPadding="false",然后将孩子的边距设置为负,然后开始工作。

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clipToPadding="false"
        android:paddingStart="@dimen/dp_16"
        android:paddingEnd="@dimen/dp_16">
        <View
            android:id="@+id/gap"
            android:layout_marginStart="-16dp"
            android:layout_marginEnd="-16dp"
            app:layout_constraintTop_toTopOf="parent" />

    </androidx.constraintlayout.widget.ConstraintLayout>