20

我试图将 a居中TextViewaLinearLayout并且它水平居中但不是垂直居中。

下面是我的代码

 <LinearLayout
        android:orientation="vertical"
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:background="@drawable/rectblack"
        android:layout_marginTop="10dp"
        android:layout_gravity="center"
        android:minWidth="25px"
        android:minHeight="25px">
        <TextView
            android:text="Explode a Vin"
            android:gravity="center"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tvExVin" />
    </LinearLayout>

最后,我希望它垂直居中在 . 的左侧Linearlayout,如果有人能弄清楚如何做到这一点,那就太好了。

谢谢!

4

3 回答 3

50

您将重力和 layout_gravity 颠倒了。您可以在重力属性上有多个值,用“|”分隔。试试这个:

 <LinearLayout
        android:orientation="vertical"
        android:layout_width="320dp"
        android:layout_height="50dp"
        android:background="@drawable/rectblack"
        android:layout_marginTop="10dp"
        android:layout_gravity="center_horizontal"
        android:gravity="center_vertical|left"
        android:minWidth="25px"
        android:minHeight="25px">
        <TextView
            android:text="Explode a Vin"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tvExVin" />
    </LinearLayout>

为了澄清:

android:layout_gravity="center_horizontal"将 LinearLayout 在其父级中水平居中。

android:gravity="center_vertical|left"将使 TextView(和任何其他子项)在 LinearLayout 内垂直居中,并将其与左侧对齐。

于 2013-07-10T20:21:56.180 回答
4

尝试将您的更改gravity

android:layout_gravity="center_vertical"

gravity用于将内容定位在您的内部View,并layout_gravity用于将内容定位View在其父级中。

但我对“最后我希望它垂直居中在线性布局的左侧”感到困惑。但从听起来的方式来看,我的回答应该给你你想要的。

此外,除非有很好的理由,否则您不应该LinearLayout为一个孩子使用 a 或任何父母。如果您可以更好地解释您想要什么甚至是屏幕截图,那么我们可能会提供更好的解决方案。

这会给你想要的效果

<LinearLayout
    android:layout_width="320dp"       <!-- removed orientation (horizontal by default)  -->
    android:layout_height="50dp"
    android:background="@drawable/rectblack"
    android:layout_marginTop="10dp"
    android:layout_gravity="center"
    android:minWidth="25px"
    android:minHeight="25px">
    <TextView
        android:text="Explode a Vin"
        android:layout_gravity="center_vertical"       <!-- changed gravity here  -->
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"           <!-- change to wrap_content -->
        android:id="@+id/tvExVin" />
</LinearLayout>
于 2013-07-10T20:19:57.713 回答
0
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_horizontal|center_vertical"
    android:gravity="center_vertical|center_horizontal"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="AppLock Demo"
        android:textSize="30dp" />

</LinearLayout>
于 2015-07-30T10:24:20.003 回答