LinearLayout не выравнивается по правому краю

У меня есть этот 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 не выравнивается по левому краю. Что не так?

покажите скриншот.

Nouman Ch 15.04.2018 07:19

Я дам мне минутку.

user8488959 15.04.2018 07:23

Я не могу сделать снимок экрана, но макет вкладки выровнен по левому краю и связан с изображением, а не справа на границе линейного макета.

user8488959 15.04.2018 07:25

где вы используете TabLayout в приведенном выше коде, я его не вижу.

Nouman Ch 15.04.2018 07:28

Что ты имеешь в виду, это там.

user8488959 15.04.2018 07:31

Я имею в виду tablelayout извините

user8488959 15.04.2018 07:32
1
6
28
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Попробуйте с этим

<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>

LinearLayout - не лучший родитель для использования в этом случае. layout_gravity не работает так, как вы ожидаете, когда ориентация - horizontal, а вид справа имеет ширину wrap_content и не заполняет все пространство, как в этом случае. Вам следует использовать RelativeLayout или ConstraintLayout. Вот пример использования 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.

Другие вопросы по теме