如何使用负边距而不重叠?

时间:2019-05-10 00:53:29

标签: android-layout android-gridlayout

以下是一个GridLayout,其中包含具有零边距的元素:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="400dp"
    android:layout_height="400dp"
    android:columnCount="2"
    android:rowCount="2"
    android:orientation="horizontal">
    <ImageView
        android:layout_row="0"
        android:layout_column="0"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
    <ImageView
        android:layout_row="0"
        android:layout_column="1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
    <ImageView
        android:layout_row="1"
        android:layout_column="0"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
    <ImageView
        android:layout_row="1"
        android:layout_column="1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
</GridLayout>

Zero margin

以下是GridLayout包含带有负边距的元素:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="400dp"
    android:layout_height="400dp"
    android:columnCount="2"
    android:rowCount="2"
    android:orientation="horizontal">
    <ImageView
        android:layout_row="0"
        android:layout_column="0"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_margin="-40dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
    <ImageView
        android:layout_row="0"
        android:layout_column="1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_margin="-40dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
    <ImageView
        android:layout_row="1"
        android:layout_column="0"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_margin="-40dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
    <ImageView
        android:layout_row="1"
        android:layout_column="1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_margin="-40dp"
        android:src="@drawable/android"
        android:scaleType="centerCrop"/>
</GridLayout>

With negative margins

是否有防止重叠的方法?换句话说,每个网格单元都显示一个放大和裁剪的元素。
在此示例中,我使用ImageView。元素可以是任何其他类型,例如SurfaceView。

1 个答案:

答案 0 :(得分:0)

将每个ImageView嵌入LinearLayout中,然后将缩放比例添加到ImageView中以进行缩放。 请尝试以下代码

<?xml version="1.0" encoding="utf-8"?>
<GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="400dp"
    android:layout_height="400dp"
    android:columnCount="2"
    android:orientation="horizontal"
    android:rowCount="2">

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_row="0"
        android:layout_column="0">

        <ImageView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:scaleType="centerCrop"
            android:scaleX="1.2"
            android:scaleY="1.2"
            android:src="@drawable/android" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_row="0"
        android:layout_column="1">

        <ImageView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:scaleType="centerCrop"
            android:scaleX="1.2"
            android:scaleY="1.2"
            android:src="@drawable/android" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_row="1"
        android:layout_column="0">

        <ImageView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:scaleType="centerCrop"
            android:scaleX="1.2"
            android:scaleY="1.2"
            android:src="@drawable/android" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_row="1"
        android:layout_column="1">

        <ImageView
            android:layout_width="200dp"
            android:layout_height="200dp"
            android:scaleType="centerCrop"
            android:scaleX="1.2"
            android:scaleY="1.2"
            android:src="@drawable/android" />
    </LinearLayout>
</GridLayout>

希望这会有所帮助!