停止线性布局重叠

Stop Linear layouts overlapping

我目前遇到布局相互重叠的问题,如下所示。

从来没有遇到过这个问题,因为似乎也找不到问题的原因。 文本当前位置正确,但两个线性布局的权重似乎不正确。

XML

<?xml version="1.0" encoding="utf-8"?>

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardBackgroundColor="#777777"
    card_view:cardCornerRadius="0dp"
    card_view:cardElevation="3dp"
    card_view:cardUseCompatPadding="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="horizontal"
        android:weightSum="10">

        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight="3">

            <ImageView
                android:id="@+id/thumbImageView"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@drawable/soul_bg" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="0dip"
            android:layout_height="match_parent"
            android:layout_weight="7">

            <TableLayout
                android:id="@+id/tableLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:stretchColumns="0,1,2"
                android:weightSum="6">

                <TableRow
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="3"
                    android:textColor="#FFF"
                    android:weightSum="3">

                    <TextView
                        android:id="@+id/nameTextView"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:text="Name:"
                        android:textColor="#FFF" />

                    <TextView
                        android:id="@+id/hpTextView"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:text="HP:"
                        android:textColor="#FFF" />

                    <TextView
                        android:id="@+id/atkTextView"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:text="ATK:"
                        android:textColor="#FFF" />
                </TableRow>

                <TableRow
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:layout_weight="3"
                    android:textColor="#FFF"
                    android:weightSum="3">

                    <TextView
                        android:id="@+id/typeTextView"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:text="Race:"
                        android:textColor="#FFF" />

                    <TextView
                        android:id="@+id/defTextView"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:text="DEF"
                        android:textColor="#FFF" />

                    <TextView
                        android:id="@+id/wisTextView"
                        android:layout_width="0dp"
                        android:layout_height="match_parent"
                        android:layout_weight="1"
                        android:text="WIS"
                        android:textColor="#FFF" />
                </TableRow>
            </TableLayout>
        </LinearLayout>
    </LinearLayout>
</android.support.v7.widget.CardView>

您发布的布局非常正确。 这就是我的样子:

这里的 XML 看起来不像是问题。

我只能猜测,你究竟出了什么问题,但如果你将 CardView 的宽度设置为 wrap_content(& 如果它不够 space 用于布局中的 CardView),因此请确保不要在后面的代码中的某处执行此操作。因此,在代码 中查找任何 可能会更改 CardView 或其子项的 属性 布局的内容。

此外,我建议您确保使用最新的 CardView 支持库。

P.S.

您仍然可以通过删除不必要的组件来稍微改进您的布局:

<android.support.v7.widget.CardView
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardBackgroundColor="#777777"
    card_view:cardCornerRadius="0dp"
    card_view:cardElevation="3dp"
    card_view:cardUseCompatPadding="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="10">

        <ImageView
            android:id="@+id/thumbImageView"
            android:layout_width="0dp"
            android:layout_weight="3"
            android:layout_height="match_parent"/>
        <TableLayout
            android:id="@+id/tableLayout"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:stretchColumns="0,1,2"
            android:layout_weight="7"
            android:weightSum="6">

            <TableRow
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="3"
                android:textColor="#FFF"
                android:weightSum="3">
                <TextView
                    android:id="@+id/nameTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="Name:"
                    android:textColor="#FFF" />
                <TextView
                    android:id="@+id/hpTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="HP:"
                    android:textColor="#FFF" />
                <TextView
                    android:id="@+id/atkTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="ATK:"
                    android:textColor="#FFF" />
            </TableRow>

            <TableRow
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="3"
                android:textColor="#FFF"
                android:weightSum="3">
                <TextView
                    android:id="@+id/typeTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="Race:"
                    android:textColor="#FFF" />
                <TextView
                    android:id="@+id/defTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="DEF"
                    android:textColor="#FFF" />
                <TextView
                    android:id="@+id/wisTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="WIS"
                    android:textColor="#FFF" />
            </TableRow>
        </TableLayout>
    </LinearLayout>
</android.support.v7.widget.CardView>

希望对你有所帮助

如果您遇到重叠问题,可以使用 属性 修复 ImageView

android:scaleType="fitXY"

建议 ::在不同的设备上测试时,必须制作不同尺寸的图片。

所以你的布局将如下所示

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:card_view="http://schemas.android.com/apk/res-auto"
    android:id="@+id/card_view"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    card_view:cardBackgroundColor="#777777"
    card_view:cardCornerRadius="0dp"
    card_view:cardElevation="3dp"
    card_view:cardUseCompatPadding="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:weightSum="10">

        <ImageView
            android:id="@+id/thumbImageView"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="3"
            android:background="@drawable/soul_bg"
            android:scaleType="fitXY" />

        <TableLayout
            android:id="@+id/tableLayout"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="7"
            android:stretchColumns="0,1,2"
            android:weightSum="6">

            <TableRow
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="3"
                android:textColor="#FFF"
                android:weightSum="3">

                <TextView
                    android:id="@+id/nameTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="Name:"
                    android:textColor="#FFF" />

                <TextView
                    android:id="@+id/hpTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="HP:"
                    android:textColor="#FFF" />

                <TextView
                    android:id="@+id/atkTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="ATK:"
                    android:textColor="#FFF" />
            </TableRow>

            <TableRow
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_weight="3"
                android:textColor="#FFF"
                android:weightSum="3">

                <TextView
                    android:id="@+id/typeTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="Race:"
                    android:textColor="#FFF" />

                <TextView
                    android:id="@+id/defTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="DEF"
                    android:textColor="#FFF" />

                <TextView
                    android:id="@+id/wisTextView"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="1"
                    android:text="WIS"
                    android:textColor="#FFF" />
            </TableRow>
        </TableLayout>
    </LinearLayout>
</android.support.v7.widget.CardView>