LinearLayout项不会改变重力

时间:2019-08-14 12:40:28

标签: android layout gravity

我的布局如下:

<LinearLayout 
    orientation="horizontal" 
    layout_width="match_parent" 
    layout_height="match_parent">

    <ImageView 
            layout_width="50dp" 
            layout_height="match_parent" 
            srcCompat="@drawable/eshop" 
            id="@+id/imageView" 
            contentDescription="@string/eshop_icon_description"/>

    <TextView 
            id="@+id/game_price" 
            text="@string/game_price" 
            layout_margin="5dp" 
            layout_width="wrap_content" 
            layout_height="wrap_content" 
            textColor="#2196F3"/>

    <TextView 
            id="@+id/game_discount" 
            text="@string/game_discount" 
            layout_marginTop="5dp" 
            layout_marginEnd="5dp" 
            layout_marginRight="5dp" 
            layout_width="wrap_content" 
            layout_height="wrap_content" 
            textColor="#E91E63"/>
</LinearLayout>

外观如下:

enter image description here

我希望价格和折扣在右边,徽标在左边,但是使用gravity_layout或gravity不会改变。

我缺少什么?

3 个答案:

答案 0 :(得分:0)

让您LinearLayout定向vertical而不是horizontal

然后使用android:layout_gravity="left"android:layout_gravity="right"

答案 1 :(得分:0)

我不知道我是否正确理解了您的问题...但是您想要的外观与您发布的图像相同吗?我已经添加了我认为的徽标,绿色的ImageView充当了替换器...

您需要更改ImageViews src。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="horizontal"
              android:layout_width="match_parent"
              android:layout_height="match_parent">

    <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_sendr"
    />

    <LinearLayout
            android:orientation="horizontal"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content">

        <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/ic_sendr"
        />

        <TextView
                android:id="@+id/game_price"
                android:text="game_price"
                android:layout_margin="5dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="#2196F3"/>

        <TextView
                 android:id="@+id/game_discount"
                 android:text="discount"
                 android:layout_marginTop="5dp"
                 android:layout_marginEnd="5dp"
                 android:layout_marginRight="5dp"
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:textColor="#E91E63"/>
    </LinearLayout>

</LinearLayout>

答案 2 :(得分:0)

也许可以像下面那样使用ConstraintLayout?

<androidx.constraintlayout.widget.ConstraintLayout 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">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="50dp"
        android:layout_height="match_parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/ic_smiley" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <TextView
            android:id="@+id/game_price"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="end"
            android:layout_margin="5dp"
            android:text="$1.767"
            android:textColor="#2196F3"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/game_discount"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:layout_marginEnd="5dp"
            android:text="25%"
            android:textColor="#E91E63" />
    </LinearLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

使用此选项可使“价格和折扣”移动到布局中的最右侧位置,徽标将保留在左侧。

现在,我很快完成了此操作,因此您必须对将要获得的奇怪的填充和边距进行所有调整,但这可以按您的意愿进行。