首页 > 解决方案 > 将图像视图与 Android 中的其他线性布局元素对齐

问题描述

我正在根据下面的快照设计一个静态周历。如您所见,点图像未与线性布局中的其他项目对齐。这是一个静态日历,显示当前一周中的天数。I had to set button width and height to 40dp else instead of circular background I was getting bit of oval shape for button background when selected. 将点图标与其他项目垂直对齐所需的更改上的任何指针。

圆形按钮样式如下。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="false">
        <shape android:shape="oval">
            <solid android:color="#FFFFFF"/>
        </shape>
    </item>
    <item android:state_pressed="true">
        <shape android:shape="oval">
            <solid android:color="#000000"/>
        </shape>
    </item>
</selector>

我的 xml UI 布局如下。

<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:orientation="horizontal"
    android:weightSum="7">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="10dp"
        android:layout_weight="1"
        android:orientation="vertical">

        <TextView
            android:id="@+id/dayLabel1"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:gravity="center"
            android:text="M"
            android:textAlignment="center" />

        <Button
            android:id="@+id/dateBtn1"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_button"
            android:text="13" />

        <ImageView
            android:id="@+id/dotIcon1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            app:srcCompat="@drawable/dotindicatoricon" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="10dp">

        <TextView
            android:id="@+id/dayLabel2"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:gravity="center"
            android:text="M"
            android:textAlignment="center" />

        <Button
            android:id="@+id/dateBtn2"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_button"
            android:text="13" />

        <ImageView
            android:id="@+id/dotIcon2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:layout_gravity="center_horizontal"
            app:srcCompat="@drawable/dotindicatoricon" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="10dp">

        <TextView
            android:id="@+id/dayLabel3"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:gravity="center"
            android:text="M"
            android:textAlignment="center" />

        <Button
            android:id="@+id/dateBtn3"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_button"

            android:text="13" />

        <ImageView
            android:id="@+id/dotIcon3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            app:srcCompat="@drawable/dotindicatoricon" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="10dp">

        <TextView
            android:id="@+id/dayLabel4"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:gravity="center"
            android:text="M"
            android:textAlignment="center" />

        <Button
            android:id="@+id/dateBtn4"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_button"

            android:text="13" />

        <ImageView
            android:id="@+id/dotIcon4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            app:srcCompat="@drawable/dotindicatoricon" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="10dp">

        <TextView
            android:id="@+id/dayLabel5"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:gravity="center"
            android:text="M"
            android:textAlignment="center" />

        <Button
            android:id="@+id/dateBtn5"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_button"

            android:text="13" />

        <ImageView
            android:id="@+id/dotIcon5"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            app:srcCompat="@drawable/dotindicatoricon" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="10dp">

        <TextView
            android:id="@+id/dayLabel6"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:gravity="center"
            android:text="M"
            android:textAlignment="center" />

        <Button
            android:id="@+id/dateBtn6"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_button"

            android:text="13" />

        <ImageView
            android:id="@+id/dotIcon6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            app:srcCompat="@drawable/dotindicatoricon" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical"
        android:layout_marginTop="10dp"
        android:layout_marginEnd="10dp">

        <TextView
            android:id="@+id/dayLabel7"
            android:layout_width="40dp"
            android:layout_height="wrap_content"
            android:layout_gravity="fill"
            android:gravity="center"
            android:text="M"
            android:textAlignment="center" />

        <Button
            android:id="@+id/dateBtn7"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:background="@drawable/round_button"
            android:text="13" />

        <ImageView
            android:id="@+id/dotIcon7"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="5dp"
            app:srcCompat="@drawable/dotindicatoricon" />    
    </LinearLayout>    
</LinearLayout>

界面布局

标签: androidkotlin

解决方案


重力=“中心”应该是合适的,似乎有一个问题withdotindicatoricon,也许你在xml中设置了一些边距?还是某处有填充物?


推荐阅读