GridLayout项目未正确对齐

时间:2018-03-05 14:02:06

标签: android xml

我有3个项目:

图像视图,TextView和CheckBox

我希望图像视图(信息图标)显示在GridLayout的最左侧,文本显示在屏幕中央,复选框显示在最右侧,尽管设置了我的正确的列图像仍然堆叠在彼此的顶部,如图所示;任何想法?

enter image description here

custome_row.xml

<?xml version="1.0" encoding="utf-8"?>
<GridLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/customRow"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:alignmentMode="alignMargins"
    android:useDefaultMargins="true"
    android:columnOrderPreserved="false"
    android:rowCount="2"
    android:columnCount="3"
    android:orientation="horizontal">

    <ImageView
        android:id="@+id/rowImage"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="0"
        android:layout_row="0"
        android:layout_marginTop="6dp"
        android:src="@drawable/ic_info_outline" />

    <TextView
        android:id="@+id/rowTitle"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textColor="@color/colorPrimary"
        android:layout_row="0"
        android:layout_column="2"
        android:layout_marginLeft="8dp"
        android:textSize="20dp" />

    <CheckBox
        android:id="@+id/completedCheck"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_column="2"
        android:layout_row="0"/>

</GridLayout>

2 个答案:

答案 0 :(得分:2)

您的代码:您已使用CheckBox&amp;的相同代码TextView

    android:layout_row="0"
    android:layout_column="2"

您还可以采用布局重力:

enter image description here

使用以下代码:

<?xml version="1.0" encoding="utf-8"?>
<GridLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/customRow"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:alignmentMode="alignMargins"
android:useDefaultMargins="true"
android:columnOrderPreserved="false"
android:rowCount="2"
android:columnCount="3"
android:orientation="horizontal">

<ImageView
    android:id="@+id/rowImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="0"
    android:layout_row="0"
    android:layout_marginTop="6dp"
    android:src="@mipmap/ic_launcher" />

<TextView
    android:layout_columnWeight="1"
    android:id="@+id/rowTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textColor="@color/colorPrimary"
    android:layout_row="0"
    android:text="TextView"
    android:layout_column="1"
    android:layout_marginLeft="8dp"
    android:textSize="20dp" />

<CheckBox
    android:layout_columnWeight="1"
    android:text="android"
    android:id="@+id/completedCheck"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_column="2"
    android:layout_row="0"/>

答案 1 :(得分:1)

所以我发现你的代码存在两个问题

  1. 最后两个项目的列号相同,这就是它堆叠的原因。
  2. 您没有为每个视图提供正确的layout_gravity
  3. 以下是您使用的修改后的代码

    <?xml version="1.0" encoding="utf-8"?>
    <GridLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/customRow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:alignmentMode="alignMargins"
        android:useDefaultMargins="true"
        android:columnOrderPreserved="false"
        android:rowCount="2"
        android:columnCount="3"
        android:orientation="horizontal">
    
        <ImageView
            android:id="@+id/rowImage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="0"
            android:layout_row="0"
            android:layout_marginTop="6dp"
            android:src=""
            tools:src="@tools:sample/avatars"
            android:layout_gravity="start|center_vertical"
            />
    
        <TextView
            android:id="@+id/rowTitle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="#008269"
            android:layout_row="0"
            android:layout_column="1"
            android:textSize="20dp"
            android:text="Testing"
            android:layout_gravity="center"
           />
    
        <CheckBox
            android:id="@+id/completedCheck"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_column="2"
            android:layout_row="0"
            android:layout_gravity="end|center_vertical"
            />
    
    </GridLayout>
    

    enter image description here