在 LinearLayout 中将 TextView 调整为垂直居中(水平)

Posted

技术标签:

【中文标题】在 LinearLayout 中将 TextView 调整为垂直居中(水平)【英文标题】:Adjust TextView to Vertically center in LinearLayout (horizental) 【发布时间】:2020-08-15 22:08:57 【问题描述】:

我在LinearLayoutorientation="horizontal" 中有四个TextView。在下图中,我希望我的第四个TextViewvertically center 相对于其他视图,简单来说,我想将我的第四个TextView 向上移动一点,使其看起来像在中心。我尝试添加布局:重力和边距,但它不起作用。

代码如下:

  <LinearLayout
        android:id="@+id/tv_amenities"
        android:layout_
        android:layout_
        android:layout_below="@+id/tv_main_feature_LL"
        android:layout_marginStart="10dp"
        android:layout_marginBottom="10dp"
        android:orientation="horizontal"

        >

        <TextView
            android:layout_
            android:layout_
            android:background="@drawable/rating_background"
            android:drawableTop="@drawable/ic_food_and_restaurant"
            android:padding="3dp"
            android:text="Resturant"
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
            android:textColor="@android:color/white" />

        <TextView
            android:layout_
            android:layout_
            android:layout_marginStart="10dp"
            android:background="@drawable/rating_background"
            android:drawableTop="@drawable/ic_tv_black_24dp"
            android:padding="3dp"
            android:text="LCD Tv"
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
            android:textColor="@android:color/white"

            />

        <TextView
            android:layout_
            android:layout_
            android:layout_marginStart="10dp"
            android:background="@drawable/rating_background"
            android:drawableTop="@drawable/ic_local_parking_black_24dp"
            android:padding="3dp"
            android:text="Parking"
            android:textAppearance="@style/TextAppearance.AppCompat.Body1"
            android:textColor="@android:color/white"

            />

        <TextView
            android:id="@+id/tv_plus_amenities"
            android:layout_
            android:layout_
            android:layout_marginStart="15dp"
            android:layout_marginBottom="20dp"
            android:background="@drawable/round_background"
            android:text="+15"

            android:textColor="@android:color/white" />


    </LinearLayout>

【问题讨论】:

【参考方案1】:

您可以通过添加 android:layout_gravity="center_vertical" 并删除底部边距来轻松做到这一点。

        <TextView
        android:id="@+id/tv_plus_amenities"
        android:layout_
        android:layout_
        android:layout_marginStart="15dp"
        android:layout_gravity="center_vertical"
        android:background="@drawable/round_background"
        android:text="+15"
        android:textColor="@android:color/white" />

【讨论】:

【参考方案2】:

将此道具添加到您的@+id/tv_amenities LinearLayout

android:gravity="center_vertical"

【讨论】:

【参考方案3】:

在你的 TextView 中使用 android:layout_gravity="center_vertical" 属性

【讨论】:

【参考方案4】:

我在约束布局中检查了您的代码,这很好。 我所做的只是在您的最后一个 TextView 中:

android:layout_gravity="center"

或者

android:layout_gravity="center_vertical"

layout_gravity=center 看起来与 layout_gravity=center_horizo​​ntal 因为它们是垂直的 线性布局。在这种情况下你不能垂直居中,所以 layout_gravity=center 仅水平居中。

这个link can help you to fix your issue in LinearLayout or RelativeLayout.

您可能会发现此链接很有用:What is the difference between gravity and layout_gravity in Android?

【讨论】:

我在RelativeLayout下使用这个,但你在ConstrainLayout中尝试过。此外,已经尝试过android:layout_gravity="center",但它不能正常工作。 相对布局和约束布局之间(在代码中)应该没有太大区别。我在GitHub. 上创建了一个小代码sn-p,希望对您有所帮助。

以上是关于在 LinearLayout 中将 TextView 调整为垂直居中(水平)的主要内容,如果未能解决你的问题,请参考以下文章

如何在水平LinearLayout中将元素右对齐?

如何在linearLayout中将视图置于最前面

在 LinearLayout 中将 TextView 调整为垂直居中(水平)

如何在 XCode 中将图像和文本放在相同的布局中

使用 ValueAnimator 对 LinearLayout 容器的高度进行动画处理

循环中的多个膨胀视图