在 LinearLayout 中将 TextView 调整为垂直居中(水平)
Posted
技术标签:
【中文标题】在 LinearLayout 中将 TextView 调整为垂直居中(水平)【英文标题】:Adjust TextView to Vertically center in LinearLayout (horizental) 【发布时间】:2020-08-15 22:08:57 【问题描述】:我在LinearLayout
和orientation="horizontal"
中有四个TextView
。在下图中,我希望我的第四个TextView
到vertically 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_horizontal 因为它们是垂直的 线性布局。在这种情况下你不能垂直居中,所以 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 中将 TextView 调整为垂直居中(水平)