如何在TextView中垂直对齐文本

时间:2014-09-09 14:46:00

标签: android android-layout user-interface android-linearlayout textview

我试图让一些文本在TextView中垂直对齐,但由于某种原因它只是粘在这样的TextView的顶部边缘。

相信我,我已经在Stack Overflow上阅读了几个关于相同或类似问题的问题,并尝试应用所提供的解决方案,但似乎没有任何改变。

例如,我认为立即解决问题的方法是添加属性android:gravity="center_vertical|left",但这也无济于事。

这个用户的question几乎完全描述了我的问题,除了他的TextView在RelativeLayout中,而RelativeLayout又在ScrollView中,我不会(也不需要或不想)使用它。他提供的图像也完全适用于我正在尝试的describeachieve

<?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="wrap_content"
    android:weightSum="2" >

    <ImageView
        android:id="@+id/account_server_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/account_server_icon"
        android:paddingLeft="16dp"
        android:gravity="left" />    

    <TextView
        android:orientation="vertical"
        android:id="@+id/tv_account"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:gravity="left|center_vertical" />

</LinearLayout>

3 个答案:

答案 0 :(得分:2)

问题是您的TextView高度设置为wrap_content。这意味着文本容器的大小将与文本的高度相同,因此视图中确实没有任何地方可以使内容居中(它实际上已经垂直居中)。

如果您发布的LinearLayout 仅包含ImageViewTextView,那么您可以简单地将高度更改为match_parent和它应该工作正常。

如果LinearLayout包含其他View,您可能需要考虑使用RelativeLayout并将TextView设置为与图片的顶部和底部对齐

答案 1 :(得分:1)

根据您的成就建议,您只需将gravity更改为layout_gravity

即可
<?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="wrap_content"
    android:weightSum="2" >

    <ImageView
        android:id="@+id/account_server_icon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:contentDescription="@string/account_server_icon"
        android:paddingLeft="16dp"
        android:gravity="left" />    

    <TextView
        android:orientation="vertical"
        android:id="@+id/tv_account"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="16dp"
        android:layout_gravity="left|center_vertical" />

</LinearLayout>

答案 2 :(得分:0)

您需要设置重力然后将文本对齐设置为重力

<TextView
    android:orientation="vertical"
    android:id="@+id/tv_account"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingLeft="16dp"
    android:gravity="left|center_vertical"
    android:textAlignment="gravity"
 />