LinearLayout未对齐

时间:2018-04-15 05:17:43

标签: android view alignment

我有这个xml代码:

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="140dp">
    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/imageprofile"
        android:layout_width="120dp"
        android:layout_height="110dp"
        android:layout_gravity="right|center"
        android:layout_margin="35dp" />
    <TableLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_vertical|right"
        android:paddingLeft="15dp">

        <TableRow
            android:id="@+id/tableRow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center">

            <TextView
                android:id="@+id/tvFullName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|left"
                android:fontFamily="sans-serif-light"
                android:text=""
                android:textSize="30dp"
                android:textStyle="bold" />

        </TableRow>
        <TableRow
        android:gravity="center"
        android:layout_gravity="center"
        android:id="@+id/tableRow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

            <TextView
                android:id="@+id/tvUserName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|left"
                android:text="Small Text"
                android:textSize="15dp"
                android:textStyle="italic" />
        </TableRow>
    </TableLayout>
</LinearLayout>

在此代码中,图像(id:imageprofile)应该与左对齐 并且TableLayout应该与右边对齐。

除了TableLayout没有与左边对齐外,一切正常。什么错了?

2 个答案:

答案 0 :(得分:0)

尝试使用此

<LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="140dp"
        android:orientation="horizontal"
>
    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/imageprofile"
        android:layout_width="120dp"
        android:layout_height="110dp"

        android:layout_margin="35dp" />
    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:paddingLeft="15dp">

        <TableRow
            android:id="@+id/tableRow"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center">

            <TextView
                android:id="@+id/tvFullName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|left"
                android:fontFamily="sans-serif-light"
                android:text=""
                android:textSize="30dp"
                android:textStyle="bold" />

        </TableRow>
        <TableRow
        android:gravity="center"
        android:layout_gravity="center"
        android:id="@+id/tableRow"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

            <TextView
                android:id="@+id/tvUserName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|left"
                android:text="Small Text"
                android:textSize="15dp"
                android:textStyle="italic" />
        </TableRow>
    </TableLayout>
</LinearLayout>

答案 1 :(得分:0)

在这种情况下,

LinearLayout不是最好的父母。当方向为layout_gravity并且右侧的视图宽度为horizontal并且未填充整个空间时,wrap_content无法按预期方式工作这个案例。您应该使用RelativeLayoutConstraintLayout。以下是使用RelativeLayout

的示例
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="140dp"
    android:orientation="horizontal">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/imageprofile"
        android:layout_width="120dp"
        android:layout_height="110dp"
        android:layout_alignParentStart="true"
        android:layout_margin="35dp"/>

    <TableLayout
        android:id="@+id/tablelayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_centerVertical="true"
        android:layout_marginEnd="15dp">

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center">

            <TextView
                android:id="@+id/tvFullName"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|left"
                android:fontFamily="sans-serif-light"
                android:text=""
                android:textSize="30dp"
                android:textStyle="bold"/>

        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center">

            <TextView
                android:id="@+id/tvUserName"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|left"
                android:text="Small Text"
                android:textSize="15dp"
                android:textStyle="italic"/>
        </TableRow>
    </TableLayout>
</RelativeLayout>

此外,您应该确保不会在与TableRow

相同的布局中复制ID。