在Table中保持TableRow列的静态长度

时间:2016-02-01 08:57:49

标签: android android-tablelayout android-cardview

我有一张卡片视图,其中包含图片和一些文字视图,如下所示。

enter image description here

这正是我希望所有内容都被定位的方式,但是无论何时放置文本,其中名称和种族都是列宽扩展,将所有内容放在不适当的位置,如下所示。

enter image description here

我希望一切都能留在原地但不确定我哪里出错了。

XML

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

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

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

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

    <TableLayout
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        android:stretchColumns="0,1,2"
        android:id="@+id/tableLayout">
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:textColor="#FFF"
            android:layout_weight="1">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Name:"
                android:id="@+id/nameTextView"
                android:textColor="#FFF"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="HP:"
                android:textColor="#FFF"
                android:id="@+id/hpTextView" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="ATK:"
                android:textColor="#FFF"
                android:id="@+id/atkTextView" />
        </TableRow>
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:textColor="#FFF"
            android:layout_weight="1">
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Race:"
                android:id="@+id/typeTextView"
                android:textColor="#FFF"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="DEF"
                android:textColor="#FFF"
                android:id="@+id/defTextView"
                />

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

2 个答案:

答案 0 :(得分:2)

通过这种方式,您可以应用 weightSum ,请尝试以下代码

<?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="#2f2f2f"
    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>

答案 1 :(得分:2)

android:weightSum应用于父级布局,将android:layout_weight应用于子级布局/视图。

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

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

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

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