簡體   English   中英

Android GridLayout上帶有colspan和表格邊框的列的中心內容

[英]Center content of column with colspan and table borders on Android GridLayout

我正在嘗試使用GridLayout創建一個像這樣的表:

在此處輸入圖片說明

但是到目前為止,我只實現了這種方法:

在此處輸入圖片說明

使用此代碼:

               <GridLayout
                xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:rowCount="3"
                android:columnCount="4"
                android:orientation="horizontal"
                android:background="@drawable/table_border" >

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:background="@color/negro"
                    android:layout_columnSpan="4">
                    <TextView
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:text="Peso de Bala"
                        android:textColor="@color/white"
                        android:gravity="center_horizontal"/>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:layout_columnSpan="2"
                    android:layout_gravity="center_horizontal">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="2.59"
                        android:textColor="@color/negro"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:layout_columnSpan="2"
                    android:layout_gravity="center_horizontal">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="40"
                        android:textColor="@color/negro"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:layout_columnSpan="2"
                    android:layout_gravity="center_horizontal">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Gramos"
                        android:textColor="@color/negro"/>
                </LinearLayout>
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:background="@color/white"
                    android:layout_columnSpan="2"
                    android:layout_gravity="center_horizontal">
                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Granos"
                        android:textColor="@color/negro"/>
                </LinearLayout>
            </GridLayout>

標題似乎正確居中,但是內容居中,請問我需要在布局上進行哪些修改,或者需要添加哪些內容才能實現此目的?而且我也不知道我是否在做<shape>正確。

我的形狀代碼( drawable/table_border.xml )是這樣的:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@color/white"></solid>
    <stroke android:width="5dp" android:color="@color/negro"/>
</shape>

您無法使文本居中的原因是視圖層次結構不支持您想做的事情。 GridLayout中的單元格只有其最大子級的寬度。 如果僅針對API 21+開發,則可以考慮對單元使用權重。

我建議重新考慮此布局,並使用ConstraintLayout而不是GridView來實現它。 這將使您的布局可在所有API級別上使用。

您還可以通過在ConstraintLayout的父對象上簡單地具有黑色背景色,並在ConstraintLayout本身上具有白色背景色來實現黑色邊框。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#000"
    android:orientation="vertical">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:padding="2dp"
        android:gravity="center_horizontal"
        android:textColor="#fff"
        android:text="Velocidad"/>

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="2dp"
        android:background="#fff">

        <TextView
            android:id="@+id/value1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:gravity="center"
            android:textSize="18sp"
            android:text="383"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@id/label2"/>

        <TextView
            android:id="@+id/label1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="12sp"
            android:text="Salida M/SEG"
            app:layout_constraintTop_toBottomOf="@id/value1"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@id/label2"/>

        <TextView
            android:id="@+id/value2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="8dp"
            android:gravity="center"
            android:textSize="18sp"
            android:text="1253"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintLeft_toRightOf="@id/value1"
            app:layout_constraintRight_toRightOf="parent"/>

        <TextView
            android:id="@+id/label2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textSize="12sp"
            android:text="Muzzle PIE/SEG"
            app:layout_constraintTop_toBottomOf="@id/value2"
            app:layout_constraintLeft_toRightOf="@id/label1"
            app:layout_constraintRight_toRightOf="parent"/>

        <TextView
            android:id="@+id/value3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:gravity="center"
            android:textSize="18sp"
            android:text="310"
            app:layout_constraintTop_toBottomOf="@id/label1"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@id/label2"/>

        <TextView
            android:id="@+id/label3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="12dp"
            android:gravity="center"
            android:textSize="12sp"
            android:text="91 MTS M/SEG"
            app:layout_constraintTop_toBottomOf="@id/value3"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toLeftOf="@id/label4"
            app:layout_constraintBottom_toBottomOf="parent"/>

        <TextView
            android:id="@+id/value4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:gravity="center"
            android:textSize="18sp"
            android:text="1017"
            app:layout_constraintTop_toBottomOf="@id/label2"
            app:layout_constraintLeft_toRightOf="@id/value3"
            app:layout_constraintRight_toRightOf="parent"/>

        <TextView
            android:id="@+id/label4"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginBottom="12dp"
            android:gravity="center"
            android:textSize="12sp"
            android:text="100 YDS PIE/SEG"
            app:layout_constraintTop_toBottomOf="@id/value4"
            app:layout_constraintLeft_toRightOf="@id/label3"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

    </android.support.constraint.ConstraintLayout>

</LinearLayout>

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM